Excelmacros将选定的列单元格与“下一列”单元格进行比较,如果相同则填充颜色

我想这一定很容易做到,但是我根本找不到GoogleFu的帮助,而且我不明白VBA的对象参考指南。

我想要做的是让一个macros,让我select一列,然后让该列中的每个单元格逐行比较右列中的单元格(例如A1:B1,如果A1被选中,F1:G1被选中)。 与不同列(例如A1相比于列B中所有单元)中的所有单元或同一行中所有单元(例如A1相比A行中所有单元)相比,我不希望有一个单元。

手动操作时,我突出显示两个单元格,单击“条件格式”,按公式进行格式设置,然后input= x1 <> y1(其中x1是我要select的列,例如A1或F1 ,而y1是我想要比较的列,例如B1或G1)。

我试图使用macroslogging器,但它迫使我通过ID指定列,而不是让我用鼠标select一列。 如果有办法让一个文本框popup,让我input我想要的列,这将工作。 如果有一种方法将选定的列填充为x1,并将其右侧的列填充为y1,也可以工作。 我无法find任何这些可能性的信息。 我知道.Offset属性存在,但我不知道如何可以用于我想要的。

这里是我的macroslogging器的代码:

Sub ColorHighlightDiscrepancies() ' ' ColorHighlightDiscrepancies Macro ' ColorHighlightDiscrepancies ' ' Columns("X:Y").Select Range("Y1").Activate Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=X1<>Y1" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 4145151 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub 

这是逐行(在ExcelForum中find)的代码,但将行内的所有单元格与行内的所有其他单元格进行比较:

 Sub ColorDuplicates() Dim Data As Variant Dim DSO As Object Dim Rng As Range 'Assumes Row 1 has Column Headers Set Rng = Range("A2").CurrentRegion.Offset(1, 0) Data = Rng.Value Set DSO = CreateObject("Scripting.Dictionary") For I = 1 To UBound(Data, 1) For J = 1 To UBound(Data, 2) Key = Trim(Data(I, J)) If Key <> "" Then If Not DSO.Exists(Key) Then DSO.Add Key, 1 Else Rng.Cells(I, J).Interior.ColorIndex = 3 End If End If Next J DSO.RemoveAll Next I Set DSO = Nothing End Sub 

如果有办法让一个文本框popup,让我input我想要的列,这将工作。

幸运的是:

 Dim rng as Range Set rng = Application.InputBox("Select column(s)", Type:=8) 

或者:

我试图使用macroslogging器,但它迫使我通过ID指定列,而不是让我用鼠标select一列。

改变这个:

 Columns("X:Y").Select Range("Y1").Activate 

对此(将select当前Selection的第二列中的第一个单元格):

 Range(Selection.Cells(1, 2).Address).Activate