2016-11-17 7 views
-1

列Aの値を切り取り、列Bに切り取り、それぞれの値が対応する一致C列の値です。これは、私が達成したいことの前後です。基本的に、列Aからの各値は、列Cにその一致を検出した後、コピーされた列B.ここにVBAを使用して一致する値を別の列の1つの列に配置します

Column A  Column C 
10    1 
9    2 
8    3 
7    4 
6    5 
5    6 
4    7 
3    8 
2    9 
1    10 

Column B  Column C 
1    1 
2    2 
3    3 
4    4 
5    5 
6    6 
7    7 
8    8 
9    9 
10    10 

にその試合の左側に直接私が試みているものを貼り付けている:

Sub arrange() 
Cells(1, 1).Activate 

Do 

If IsEmpty(ActiveCell) Then Exit Do 
If ActiveCell.Offset(0, 2).Value = ActiveCell.Value Then 
ActiveCell.Select 
Selection.Copy 
ActiveCell.Offset(0, 1).Select 
ActiveSheet.Paste 
ActiveCell.Offset(1, -1).Activate 
Else 
ActiveCell.Offset(1, 0).Activate 


End If 

Loop 

End Sub 

このアプローチの問題は、同じ行で一致する値のみを検出することです。マッチが同じ行にあるかどうかにかかわらず、列全体を検索して一致の隣に値を置くことができるようにしたい。

+0

あなたの質問は何ですか?何を試しましたか? StackOverflowへようこそ。 http://stackoverflow.com/help/how-to-askこちらを読んで、質問のガイドラインに従ってください。あなたの質問に答えられるチャンスが大幅に向上します。 – jbrown

+0

SUB)(アレンジ 細胞(1、1)のisEmpty(のActiveCell)して終了ド 場合ActiveCell.Offset(0,2).Valueの= ActiveCell.Valueそして ActiveCell.Select選択場合.Activate は を行います。 ActiveCell.Offset(0、1).Select ActiveSheet.Paste ActiveCell.Offset(1、-1).Activateエルス ActiveCell.Offset(1、0).Activate エンド ループ End Subの場合はコピーし – chicoexcel

+1

すばらしいです!コメントスレッドで紛失しないように、このコードで質問を更新してください。 – jbrown

答えて

0

何をする必要列Aをループであり、各値が列Cで見つけることができるならば、それは私がすべての値が整数だったと仮定

Sub arrange() 

Dim Wbk As Workbook 

Set Wbk = ActiveWorkbook 

Dim row As Integer 
Dim col As Integer 
Dim currentA As Integer 

Dim numRows As Integer 

Worksheets("chicoexcel").Activate 
numRows = Wbk.Worksheets("chicoexcel").Range("A2", Range("A2").End(xlDown)).Rows.Count 

For a = 1 To numRows + 1 'start at 1 because it is the first row. This will loop through Column A 

    currentA = Sheets("chicoexcel").Cells(a, "A").Value 'Save the current value in column A 

    For c = 1 To numRows + 1 'start at 1 because it is the first row. This will loop through Column C 

     If (Sheets("chicoexcel").Cells(c, "C").Value = currentA) Then 'Check if the col C value is equal to the current col A value. 
      Sheets("chicoexcel").Cells(c, "B") = Sheets("chicoexcel").Cells(c, "C").Value 'If so copy to column B 
      Sheets("chicoexcel").Cells(a, "A") = Null 'Remove the value from col A 
     End If 

    Next c 

Next a 


End Sub 

列Bにコピーするかどうかを確認してくださいデータが1行目から始まることを確認してください。

これは最も効率的な解決策ではありませんが、デバッガを使用して何が起きているのかを確認することができます。物事をスピードアップするためにFIND関数を含めることができます。私はあなたにそれを理解させるでしょう。

+0

私はマクロを試してみましたが、マッチング値を移動することができましたが、マッチする値をC列のマッチに隣接して移動する必要があります。例えば、私の元の投稿の上に示したように、セルA1の値10。その一致はC10で見つかったので、A1のセルの値を10に設定して、セルB10に移動してその一致に隣接させ、A2のセルの値9をB9のセルに移動し、8の値をセルから移動させますA3からセルB8まで、列Aのすべての値を使用します。 – chicoexcel

+0

OK。もう一回やってみよう。私は更新をしました。私は間違った行に値を入れていました。 – dev1998

+0

パーフェクト!それは必要なだけ正確に機能しました。ありがとうございました! – chicoexcel

関連する問題