我对VBA和所有编码都很陌生,所以我甚至还不擅长基础知识。
我在excel中有一个工作表,里面有十几个不同的业务资产负债表。我需要根据D列中的资产名称复制特定范围内的所有行。我需要复制的特定范围在“证券”和“衍生工具”之间。
我成功地复制了第一组“证券”和“衍生产品”之间的所有数据行,但当我需要它转到下一组“证券”和“衍生品”数据时,我的For循环一直在复制相同的第一个范围。
我试过了,并认为在我的rngA中添加一个变量可能有效吗?任何帮助都是非常感谢的。
'''
Sub ChartReference2()
Dim findrow As Long
Dim findrow2 As Long
Dim rngA As Range
For Each cell In ActiveWorkbook.Worksheets("BS growth").Range("A:A")
If cell.Value = "Asset" Then
Worksheets("BS growth").Activate
findrow = Range("D:D").Find("Securities", Range("D3")).Row
findrow2 = Range("D:D").Find("Derivatives", Range("D" & findrow)).Row
Range("D" & findrow & ":D" & findrow2, Selection.End(xlToRight)).Select
Selection.Copy
End If
Next cell
End Sub
'''
发布于 2022-09-29 20:07:32
试试看这个-线上评论
Sub ChartReference2()
Dim ws As Worksheet, assetRow, f1 As Range, f2 As Range
Set ws = ActiveWorkbook.Worksheets("BS growth")
assetRow = Application.Match("Asset", ws.Columns("A"), 0)
If Not IsError(assetRow) Then 'matched a cell in Col A?
With ws.Columns("D")
Set f1 = .Find("Securities", lookat:=xlWhole, after:=.Cells(assetRow - 1), _
SearchDirection:=xlNext)
If Not f1 Is Nothing Then 'found the value?
Set f2 = .Find("Derivatives", lookat:=xlWhole, after:=f1, _
SearchDirection:=xlNext)
If Not f2 Is Nothing Then 'found the value?
ws.Range(f1, f2).Copy 'copy range
End If
End If
End With
End If
End Sub
https://stackoverflow.com/questions/73900737
复制相似问题