Excel VBA将值与列进行比较

时间:2018-07-11 05:47:41

标签: excel vba excel-vba

我有以下问题: 我有一个带有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

如果有任何问题,请随时提出。 关于如何进行这项工作的任何想法?任何新想法都将受到高度赞赏。 谢谢前进!

编辑 这是脚本应执行的示例图片: The yellow marks don't have to be made.

3 个答案:

答案 0 :(得分:2)

为什么要打扰vba?

您需要的是C列中的内容:

=if(A1=B1,"X","")

注释后编辑:要查看A列的全部-您可以设置范围:

=IF(IFERROR(MATCH(B1,A1:A10,0),FALSE),"X","")

只需输入C1单元格或要启动的单元格,请确保“ B1或B16”是您要检查并向下拖动的第一个单元格。

编辑2看到图片并注意“ No Val”更新... enter image description here

答案 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)

这是您想要的吗?