【问题标题】:VBA If 2 cells in a column are equal, number the row in column bVBA如果一列中的2个单元格相等,则为b列中的行编号
【发布时间】:2017-09-28 11:11:59
【问题描述】:

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

我尝试做一些看起来很容易的事情:

我在 A 列中有一个姓名列表。

  • 名字1
  • 名字2
  • 名字3
  • 名称 4 等等

如果发生这种情况:

  • 名字1
  • 名字1
  • 名字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

我混合了我认为的变体。

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

感谢您的阅读

最好的问候

【问题讨论】:

  • 你应该看这个系列:Excel VBA Introduction - YouTube
  • 您还应该安装Rubberduck VBA。它有许多功能可以帮助您调试代码。我最喜欢的功能是代码缩进。正确缩进的代码将帮助您发现错误。

标签: vba loops numbers cell offset


【解决方案1】:

这可以使用工作表公式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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多