2016-11-17 43 views
-1

我想從列A中取值,並將它們剪切並粘貼到列B中,每個值恰好位於其對應匹配項左側的一個單元格中來自C列的值。這是我希望完成的事情之前和之後。基本上,從列A中的每個值認定其匹配在列C和被複制,然後直接粘貼到它的匹配的左側在列B使用VBA將匹配值放在另一列中的匹配旁邊的一列中

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

子安排() 細胞(1,1).Activate 執行 如果爲IsEmpty(ActiveCell)然後退出你的 如果ActiveCell.Offset(0,2)。價值= ActiveCell.Value然後 ActiveCell.Select 選擇。複製 ActiveCell.Offset(0,1)。選擇 ActiveSheet.Paste ActiveCell.Offset(1,-1).Activate 否則 ActiveCell.Offset(1,0).Activate 結束如果 循環 結束子 – chicoexcel

+1

大!請使用此代碼更新您的問題,以便它不會在評論線程中丟失 – jbrown

回答

0

你需要做的是循環遍歷列A和檢查,看看是否每個值可以在列C.發現如果是複製到B列

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 

我以爲所有的值是整數,並且數據從第1行開始。

這不是最有效的解決方案,但您可以使用調試器查看正在發生的情況。你可以包含FIND功能來加快速度。我會讓你自己弄清楚。

+0

所以我給你的宏試了一下,它能夠將匹配值移動過來,但我需要將匹配值移動到與列C相匹配的位置。例如,如上面在我的原始文章中所示,我有單元格A1中的值爲10。它的匹配是在C10中找到的,所以我需要將單元格A1中的值10移動到單元格B10以與其匹配,將單元格A2中的值9移動到單元格B9,將值8從單元格A3到單元格B8,以此類推A列中的所有值。 – chicoexcel

+0

確定。再試一次。我做了一個更新。我把價值放在錯誤的行中。 – dev1998

+0

完美!它完全按照它應該的那樣工作。謝謝! – chicoexcel

相關問題