我在同一个工作簿中有两个工作表。在Sheet1 第1列是预期的库存条形码,在Sheet2中,第2列由我扫描的条形码组成。
我在条件格式中编写了一个公式来检查项目第2列并在它们不在第1列中时为它们着色,但我不想要滚动整个列表以查看此内容。
我想要做的是填充第三个(和第四个数量)列,只包含第2列中的条目而不是第1列,如果可能,列出在第2列中找到它的次数。
示例:
第1栏
bc123
bc1234
bc12345
bc123456
bc1234567
第2栏
bc12345
bc123456
bc56789
bc67890
bc67890
第3列(自动填充第2列中的唯一条目)
bc56789 1
bc67890 2
谢谢!
答案 0 :(得分:0)
在这里,我的VBA解决您的问题:
Public Sub findAndCount()
Dim sh1, sh2 As Worksheet
Dim foundCell As Range
Dim startSheet2, resultRow As Integer
'Set sheets
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
'Set the start row of column from Sheet2
startRow = 1
resultRow = 1
'Clear old result from column C & D of Sheet1
sh1.Range("C:D").ClearContents
'Loop all row of column 2 from Sheet2 until blank
Do While sh2.Range("B" & startRow) <> ""
'Find value in column A of Sheet1
Set foundCell = sh1.Range("A:A").Find(sh2.Range("B" & startRow), LookIn:=xlValues)
'If match value is not found
If foundCell Is Nothing Then
'Find result is already exist or not
Set foundCell = sh1.Range("C:C").Find(sh2.Range("B" & startRow), LookIn:=xlValues)
'If result is not exist, add new result. (Here, I show result in Sheet1, you can change it.)
If foundCell Is Nothing Then
'Set barcode
sh1.Range("C" & resultRow) = sh2.Range("B" & startRow)
'Set count
sh1.Range("D" & resultRow) = 1
'Increase result row
resultRow = resultRow + 1
'If already exist
Else
'Increase count
foundCell.Offset(0, 1) = foundCell.Offset(0, 1).Value + 1
End If
End If
'Increase row
startRow = startRow + 1
Loop
End Sub