遍历范围并根据计数附加值

searchnetworking和SO,但找不到帮助我的答案。 希望直接的问题能引起社区的启发。

我想创build代码,通过范围(列标题),检测重复,然后附加每个重复的计数。

例如,我的列标题看起来像这样:

  • 供应商
  • 追踪号码
  • 显示在
  • types
  • 通话报告标志
  • types
  • 应有
  • 由…制作
  • 创build
  • 由…制作
  • 创build

运行代码后,我希望他们看起来像这样:

  • 供应商
  • 追踪号码
  • 显示在
  • types1
  • 通话报告标志
  • types2
  • 应有
  • 创build者1
  • Created1
  • 创build者2
  • Created2

不重复被留下,重复已经被当前计数附加。

我已经尝试了一些代码,它使用'我的范围内的每个单元格'的计数重复#,但一旦它附加计数,它不再看到它是一个重复,所以当它移动到下一个单元格时不要追加。

这里是我的代码(尽pipe我想我可能需要从一个不同的策略开始):

Sub TestSub()

Dim Counter As Integer Dim Cell As Range Dim Headers As Range Set Headers = Worksheets("TEST SHEET").UsedRange.Rows("1:1") Counter = 1 For Each Cell In Headers.Cells.Value If WorksheetFunction.CountIf(Headers, Cell.Value) > 1 Then Cell.Value = Cell.Value & Counter End If Counter = Counter + 1 Next Cell End Sub 

希望有人能帮忙。

这使用这个公式的基础:

 =IF(COUNTIF(1:1,A1)>1,A1&COUNTIF($A$1:A$1,A1),A1) 

做你想做的事:

 Sub TestSub() Dim Cell As Range Dim Headers As Range Dim Headers2 As Range With Worksheets("TEST SHEET") Set Headers = .UsedRange.Rows("1:1") Headers.Copy .Range("A" & Worksheets("Sheet3").Rows.Count) Set Headers2 = .UsedRange.Rows(.Rows.Count & ":" & .Rows.Count) For Each Cell In Headers.Cells If WorksheetFunction.CountIf(Headers2, Cell.Value) > 1 Then Cell.Value = Cell.Value & WorksheetFunction.CountIf(Range("A" & .Rows.Count, .Cells(.Rows.Count, Cell.Column)), Cell.Value) End If Next Cell Headers2.ClearContents End With End Sub 

我们需要将标题复制到另一个位置,以在COUNTIF()中使用。 否则,一旦第一次被改变,其他的将不会相同,并且countif不能find多于一个。

在这里输入图像说明