2016-09-28 5 views
0

私はヘッダー付きのデータ行を持ち、同じヘッダーはn回表示されます。私はVBAのヘッダーをループする必要があります、それぞれが行全体に複数回存在するかどうかを確認し、そうであれば、それぞれの最後に文字列を追加します。セル値が複数回存在するかどうかを動的に確認します

HEADER 1 HEADER 2 HEADER 3 HEADER 1 HEADER 2 HEADER 3 

、結果は(のようなものルーピングした後でなければなりません:

HEADER 1 OLD HEADER 2 OLD HEADER 3 OLD HEADER 1 NEW HEADER 2 NEW HEADER 3 NEW 

を私はセルの上にループする必要がある知っているが、その後の論理は私に

For i = 1 to lastCol 
    If ws.Cells(1, i).Value = "HEADER 1" Then 
     headerCount = headerCount + 1 
    End if 
Next i 

ロジックをエスケープforループがエスケープした後

答えて

1

リストに2回ループすることができます比較する。ヘッダーがたくさんある場合、これは遅いかもしれません。

For i = 1 to lastCol - 1 
    numDuplicates = 0 
    for j = i + 1 to lastCol 
     if ws.Cells(1,i) = ws.Cells(1,j) then 
      numDuplicates = numDuplicates + 1 
      ws.Cells(1,j) = ws.Cells(1,j) & " " & numDuplicates 
     end if 
    next j 
next i 

これは何か?これは、元のヘッダーを保持し、1、2、...と重複をマークします。

+0

クール、これは動作します。私の脳は私に別の方法を考えさせていないので、これはそれでなければならないかもしれません。なぜlastCol - 1?ええ、私は間違いなく複数の重複した値を持つでしょう、私はどうにかして、それぞれ1つ、古い2などのカウンタを追加する必要があるでしょう。 – MJ95

+0

それは 'i'と何が比較されるからです'i + 1'で。私はちょうどその場所から 'j'ループを開始するように編集しました。私はそれについて考えてコードを改善しています。 :) –

+0

私は複数の重複を処理するために私の答えを編集しました。 –

関連する問題