VBA如果列中的2个单元格相等,则将列b中的行编号

时间:2017-09-28 11:11:59

标签: vba loops numbers cell offset

我想知道是否有人可以帮我解决这个问题。

我尝试制作一些看起来相当容易的东西:

我在A栏中有一个名单。

  • name 1
  • name 2
  • 名称3
  • 姓名4 等

如果发生这种情况:

  • name 1
  • name 1
  • name 1

然后它应该在B列中偏移一个数字(我将在之后连接,但这不是问题)

应该是这样的

  • 名称1-1
  • 名称1-2
  • 名称1-3

我已经制作了以下运行的宏,但令人惊讶的是它不会返回错误消息。尽管如此,没有任何反应。

    Sub test()

Dim ColonneA As Range
Dim x As Variant
Dim i As Integer
Dim y As Variant
Dim z As Integer

Set ColonneA = Range("A1:A20")
z = ColonneA.End(xlDown).Rows.Count
'HERE I DON'T KNOW HOW TO LINK z AND x
z = z - 1
y = z

i = 0

Do While x <> ""
 For Each x In ColonneA
 For Each y In ColonneA
 If x = y Then x = x.Offset(0, i)

 i = i + 1

 Next y

 Next x
Loop

End

End Sub

我认为我喜欢变种。

此外,有没有人知道是否存在一种VBA的Codecademy?

感谢您阅读

最好的问候

1 个答案:

答案 0 :(得分:0)

这可以使用工作表公式COUNTIF以及相对和绝对引用的混合来实现。

"=COUNTIF($A$1:A1,A1)". 

Sub CountDuplicates()
    With ActiveSheet
        With .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Offset(0, 1)
            .Formula = "=COUNTIF($A$1:A1,A1)"
            .Value = .Value
        End With
    End With
End Sub