我有以下问题: 我有一个带有2列A和B的Excel。A中有不同的序列号,其中可以包含不同B值的值。在两行之间,行之间可以有空单元格。
VBA脚本需要做什么: 该脚本必须采用B的值并在A列中进行搜索。请记住:这些值可以是:A567 = 2174 / ENJFA7384和B45 = ENJFA7384->这意味着它们匹配。如果它们匹配,则应在C列中写一个“ X”。如果A中B的值不匹配,它将继续。
我试图实现这一目标,并且可以运行,但是由于效率很低,导致程序崩溃。这里的代码(该脚本将单元格标记为黄色而不是写“ X”):
Sub suchen()
'in Spalte A nach einem Namen suchen
'die Zeilen farblich markieren und
'die Anzahl der Treffer anzeigen
Dim suche As String
Dim z As Integer
Dim a As Range, b As Range
Set a = Range("P2:P391")
For Each b In a.Rows
suche = b.Value
'hier ändern falls eine andere Spalte durchsucht werden soll
[B10].Activate
'wenn keine Eingabe in InpuBox erfolgte wird abgebrochen
If suche = "" Then Exit Sub
'bis zur ersten leeren Zelle suchen
Do Until ActiveCell = "STOP"
'eine Zeile nach unten gehen
ActiveCell.Offset(1, 0).Activate
'wenn die Zelle den gesuchten Wert enthält:
If ActiveCell Like suche Or ActiveCell Like "*" & suche Or ActiveCell = suche Then
'und die Zelle gelb markieren
ActiveCell.Interior.ColorIndex = 36
End If
Loop
Next
End Sub
如果有任何问题,请随时提出。 关于如何进行这项工作的任何想法?任何新想法都将受到高度赞赏。 谢谢前进!
答案 0 :(得分:2)
为什么要打扰vba?
您需要的是C列中的内容:
=if(A1=B1,"X","")
注释后编辑:要查看A列的全部-您可以设置范围:
=IF(IFERROR(MATCH(B1,A1:A10,0),FALSE),"X","")
只需输入C1单元格或要启动的单元格,请确保“ B1或B16”是您要检查并向下拖动的第一个单元格。
答案 1 :(得分:0)
我认为您正在搜索如下内容:
Sub test()
For i = 1 To Cells(Rows.Count, 10).End(xlUp).Row 'just change "1" to whenever column you want to count rows from
For b = 1 To Cells(Rows.Count, 12).End(xlUp).Row
Dim search As Variant, Find As Variant
search = Cells(b, 12).Value
Find = Cells(i, 10).Value
If Find Like "*" & search & "*" Or Find = search Then
Cells(b, 2).Offset(0, 1).Value = "x"
End If
If Cells(i, 1).Value = "" Then
Exit Sub
End If
Next b
Next i
End Sub
它为我工作,所以我希望它也能为您提供帮助。
*已编辑以在A列中找到B值,并将“ X”放在“搜索到的B值”旁边
答案 2 :(得分:0)
您为什么还要为此使用VBA?
我尝试使用以下情况:
| Column A | Column B | Column C | Column D
Row 2 | | 111/aaa | aaa | =IFERROR(FIND(C2;B2);0)
Row 3 | | 222/bbb | | =IFERROR(FIND(C2;B3);0)
Row 4 | | | | =IF(D2+D3=0;"X";D2+D3)
这是您想要的吗?