我在工作表2中有一个表,其中包含一些数据。在A列中可能有值:“配额编号XYZ”。它可能发生不止一次,也可能根本不发生。
我想找到所有配额编号并将其粘贴到工作表1中的新行中。
宏的工作方式:
我在工作表1的A列中有数字列表。外部数据粘贴到工作表2。宏在工作表2的A列中寻找“ 配额号:”,但是由于我使用Match它仅返回1个值,并将其复制到工作表1中数字旁边的列中。
外观如何:
Value Match
45678 0110
12345 0990
34567 0550
我想在工作表2中找到“ 配额编号:”,对于找到的第一个值-将其复制到下一列。但是要找到第二个或更多的值,我需要在工作表1中多留一行。例如:
Value Match
45678 0110
12345 0990
12345 0770
34567 0550
当前代码如下:
ws2.Activate
For Each c In ws1.UsedRange.Columns("A").Cells
If Not IsError(Application.Match("*Quota number:*", Range("A:A"), 0)) Then
Quota = Application.Match("*Quota number:*", Range("A:A"), 0)
QuotaVal = ActiveSheet.Cells(Quota, 1)
ws1.Cells(c.Row, 2).Value = QuotaVal
End If
Next c
我试图弄清楚,但是我不知道如何制作它,所以它在第二个和以后的比赛中添加了新行,以及如何不让循环本身循环(添加了新行,因此出现了新的c )。
答案 0 :(得分:0)
我找到了另一种方法,但遇到了一些问题。
我决定查找结果并将其复制到另一个工作表中,因此将结果粘贴到工作表3的第2列中,并用工作表1中的数字填充每个结果的列号1(原始帖子中的“值”)。 / p>
如果我只有1个值,则效果很好。我在sheet1中有2个数字,在Sheet2中有“配额数”的数据,在Sheet3中有结果。在Sheet2中,我有很多行带有伪数据,只有5个“配额号”。
因此,对于Shee1中的每个数字,必须在sheet2中找到“配额号”并将结果粘贴到sheet3中。如果我的“ For”范围只有1个单元格,则效果很好-向我返回5个配额编号。但是,如果我将范围更改为“ A1:A2”,它应该找到2次相同的数据,因此应该找到总共10个数字-但它以某种方式无法正常工作,并找到了7个数字。
外观如何:
Sheet1 - numbers that will be used to generate data in Sheet2
Results when searching only for 1 cell in range (with the code quoted)
Results when searching only for 2 cells in range (with the code unquoted)
Sub GetData()
Dim x As Range
'For Each x In Sheets(1).Range("A1:A2")
With Worksheets(2).Range("A1:A500")
Set c = .Find("Quota number*", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
'Sheets(3).Cells(c.Row, 1).End(xlUp).Offset(1, 0).Value = x.Value
Sheets(3).Cells(c.Row, 2).End(xlUp).Offset(1, 0).Value = c.Value
Set c = .FindNext(c)
If c Is Nothing Then
GoTo DoneFinding
End If
Loop While c.Address <> firstAddress
End If
DoneFinding:
End With
'Next
End Sub