我正在尝试创建一个宏来选择我的工作表中的某些数据。我有一张表格,其中包含以下数据:
Windows("Item checkout workbook_New.xlsx").Activate
Range("A2:G300").Select
Selection.Copy
Windows("VLookup test.xlsx").Activate
Sheets("Sheet1").Select
Range("A2:G2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Sheet1").Range("A2:G300").Copy Sheets("Sheet2").Range("A2")
Sheets("Sheet2").Select
Application.CutCopyMode = False
输入此数据后,我有两列H2:H300
和I2:I300
,其中已包含用于Vlookup的公式,可从A2:G300
获取信息。
我当时需要做的是只选择相关数据并将其复制回Windows("Item checkout workbook_New.xlsx")
。根据相关数据,我只需要选择包含A2:G300
范围内数据的单元格以及匹配的H2:I300
单元格。看到所有H2:I300
个单元格都有数据,我不知道如何做到这一点。我尝试创建一个宏,使用END来选择所有列A,然后选择与它一起使用的行,但这就是我得到的,你可以看到它不起作用:
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A2:I78").Select
Selection.Copy
我对VBA并不擅长,因此很难动起来,但我觉得应该有办法让它发挥作用。任何建议都会很棒!
答案 0 :(得分:1)
Range("A2").Select
Range(Selection, Selection.End(xlDown)).EntireRow.Select
Selection.Copy
Windows("Item checkout workbook_New.xlsx").Activate
Sheets("Sheet1").Select
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
搞定了!
答案 1 :(得分:0)
基于你自己的答案,似乎我可能误解了你的问题。我收集的是你正在寻找一种在工作表中选择相关单元格的方法。相关单元可以属于两个范围之一。在一个范围内,应选择非空单元格。在另一个范围中,应选择与值匹配的单元格。 (您只需添加复制/粘贴代码)
我在下面解决了这个问题。
Sub test()
'store results here
Dim result As Range
setupTest
'check this range and return items that are not empty
selectMatchingCells Range("A1:D1"), result
'check this range and return items that match value
selectMatchingCells Range("B2:C4"), result, "hi"
result.Select
End Sub
Function setupTest()
Range("A1").Value = "anything"
Range("c1").Value = "may go"
Range("D1").Value = "here"
Range("B2").Value = "hi"
Range("B3").Value = "but not here"
End Function
Function selectMatchingCells(search As Range, result As Range, Optional searchValue As String = "")
For Each cell In search
'are we checking that cell value matches string, or if cell has a value at all?
If searchValue = vbNullString Then
'check if cell is not empty
If IsEmpty(cell) = False Then selectCell result, cell
Else
'check if value matches
If cell.Text = searchValue Then selectCell result, cell
End If
Next cell
End Function
Function selectCell(result As Range, cell As Variant)
'check if result range already exists or not
If result Is Nothing Then
'make range equal to cell
Set result = cell
Else
'add cell to existing range
Set result = Union(result, cell)
End If
End Function
请更清楚,以避免误传,谢谢!