gpt4 book ai didi

excel - 如何将数据粘贴到范围的起始行和列在单元格中定义的范围中?

转载 作者:行者123 更新时间:2023-12-04 21:43:51 25 4
gpt4 key购买 nike

我的 excel 文件中有两张纸:
输入表: Sheet1 enter image description here
目标表: Sheet2 enter image description here
我想要实现的是从我在单元格 C5 中定义的列开始粘贴值。并从我在单元格 C6 中定义的行开始.如果单元格 C5 定义的范围和 C6已经有数据,那么它将根据单元格C5中的列找到下一个空行并将数据粘贴到该空行中。
例如,在上面的屏幕截图中,单元格 C5 中定义的起始列和行& C6B8 ,因此复制的值将从单元格 B8 开始粘贴直到 E8 .但是,如果该行已经有数据,那么它将根据 B 列(即 B9)找到下一个空行并将其粘贴到那里。
我不确定如何修改我当前的脚本:

Public Sub CopyData()

Dim InputSheet As Worksheet ' set data input sheet
Set InputSheet = ThisWorkbook.Worksheets("Sheet1")

Dim InputRange As Range ' define input range
Set InputRange = InputSheet.Range("G6:J106")

Dim TargetSheet As Worksheet
Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")

Const TargetStartCol As Long = 2 ' start pasting in this column in target sheet
Const PrimaryKeyCol As Long = 1 ' this is the unique primary key in the input range (means first column of B6:G6 is primary key)

Dim InsertRow As Long

InsertRow = TargetSheet.Cells(TargetSheet.Rows.Count, TargetStartCol + PrimaryKeyCol - 1).End(xlUp).Row + 1

' copy values to target row
TargetSheet.Cells(InsertRow, TargetStartCol).Resize(ColumnSize:=InputRange.Columns.Count).Value = InputRange.Value

End Sub
任何帮助或建议将不胜感激!
测试场景 1
enter image description here
测试场景 1 的输出
enter image description here

最佳答案

请尝试下一个代码:

Public Sub CopyData_()
Dim InputSheet As Worksheet: Set InputSheet = ThisWorkbook.Worksheets("Sheet1")
Dim InputRange As Range: Set InputRange = InputSheet.Range("G6:J106")
Dim arr: arr = InputRange.Value

Dim TargetSheet As Worksheet: Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")
Dim TargetStartCol As String, PrimaryKeyRow As Long
TargetStartCol = TargetSheet.Range("C5").Value ' start pasting in this column in target sheet
PrimaryKeyRow = TargetSheet.Range("C6").Value ' this is the row after the result to be copied

Dim InsertRow As Long

InsertRow = TargetSheet.cells(TargetSheet.rows.Count, TargetStartCol).End(xlUp).row + 1
If InsertRow < PrimaryKeyRow Then InsertRow = PrimaryKeyRow + 1 'in case of no entry after PrimaryKeyRow (neither the label you show: "Row")
' copy values to target row
TargetSheet.cells(InsertRow, TargetStartCol).Resize(UBound(arr), UBound(arr, 2)).Value = arr
End Sub
未经测试,但如果应该工作,我想。如果有不清楚或出错的地方,请毫不犹豫地提及错误,它对您的需要/没有什么不利或其他任何需要纠正它的东西。

关于excel - 如何将数据粘贴到范围的起始行和列在单元格中定义的范围中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70519687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com