2016-05-19 6 views
-1

2つのタブに多数のデータ行があるテスト要件があります。シート1 HASTからキー列に基づく2行の比較用のVBコード

  1. 1行一致従業員名を有する従業員の名前に基づいてシート2にし、行の下に挿入されます。たとえば :ここ

    Employee Name  Salary Rent  Loan 
    Adler, Jorge  $10,000 $2,000 $15,000 
    Adler, Jorge  $10,000 $2,000 $14,000 
    Byrne, Aleena $12,000 $1,500 $0 
    Byrne, Aleena $11,000 $1,500 $0 
    

2行目は、中に持ってきて、別のタブ、および4行目、6行目などから配置する必要があります...

2.Then 2列行に基づいて一度に比較する必要があります - Employee Name。 給与、賃貸、ローンなどの異なる列があります。従業員の給与が2つの行で異なる場合は、給与計算の両方を強調表示する必要があります。

サンプルデータ:ここ

Employee Name  Salary  Rent  Loan 
Adler, Jorge  $10,000 $2,000  $15,000 
Adler, Jorge  $10,000 $2,000  $14,000 
Byrne, Aleena  $12,000 $1,500  $0 
Byrne, Aleena  $11,000 $1,500  $0 
Bogie, Douglas  $5,000  $1,200  $1,795 
Bogie, Douglas  $5,000  $1,225 $1,795 

アドラー、ホルヘとバーン、Aleenaとボギー、ダグラスのための両方の賃貸細胞用の両方の給与細胞用の両方ローン細胞が強調されなければなりません。

答えて

0

これを試してみてください:

あなたが隣同士に2つの列を持っていたし、あなたが異なる値を持っていた行を強調表示したい場合は、あなたがこれを使用することができます

Public Sub HighlightDifferent() 
Dim rng As Range 
For Each rng In ActiveSheet.UsedRange.Rows 
    If rng.Columns(1) <> rng.Columns(2) Then rng.Interior.Color = vbYellow 
Next 
End Sub 

はテストでその最初を使用してみてくださいワークブック、その後、あなたのレイアウトで動作するようにコードを適応させるここに1つの以上の可能なソリューションです

+0

こんにちは、応答をありがとうしかし、私は比較を行ごとに必要ともあり、他に必要な行を持ち込むことで私を助けることができます従業員名の列に基づくタブ? –

1

あなたが常に特定のために知っている場合は、その2行のw互いに隣り合っていれば、これを使用することができ、内側のループがなくなります。ここで

Public Sub HighlightDifferent() 
Dim rngMain As Range, rngCompare As Range, rngAfterMain As Range, rng As Range 
With ActiveSheet.UsedRange 
    For Each rngMain In .Rows 
    If rngMain.Columns(1) = rngMain.Offset(1, 0).Columns(1) Then 
     For Each rng In rngMain.Columns 
     If rng <> rngMain.Offset(1, 0).Columns(rng.Column) Then 
      rng.Interior.Color = vbYellow 
      rngMain.Offset(1, 0).Columns(rng.Column).Interior.Color = vbYellow 
     End If 
     Next 
    End If 
    Next 
End With 
End Sub 

はマージされ、機能の並べ替え:

Public Sub MergeAndSort() 

Dim wks As Worksheet, rng As Range 
Set wks = ThisWorkbook.Worksheets.Add 
Worksheets("Sheet1").UsedRange.Copy wks.Range("A1") 

With Worksheets("Sheet2").UsedRange 
    Set rng = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) 
End With 

With wks.UsedRange 
    rng.Copy .Offset(.Rows.Count, 0).Resize(1, 1) 
End With 

wks.UsedRange.Sort key1:=wks.Range("A2"), order1:=xlAscending, Header:=xlYes 

End Sub 
+0

これはちょうど良い:-) –

+0

しかし、また別の下の行を取得する必要があります従業員の名前と一致する別のタブから –

+0

[OK]を追加しました –

関連する問題