2016-03-01 46 views
1

我在第1列和第2列(01至99)中列出了2位數的郵政編碼。我想要創建第三列,其中包含兩位數郵政編碼的每個成對組合。以便我的數據看起來像這樣,其中列3包含列1和列2(9801行)的每個成對組合。如何在Excel vba中創建每個成對組合

col1 col2 col3 
01 01 01 to 01 
02 02 02 to 02 
03 03 03 to 03 
04 04 04 to 04 
05 05 05 to 05 
06 06 06 to 06 
.  .  . 
.  .  . 
99 99 99 to 99 

有沒有一種方法可以將其編碼爲簡單的vba腳本?

+0

您可以使用快速公式:'= A2&「到」&B2「 –

+0

col3與col1和col2的長度不同。示例代碼片段沒有很好地說明,但我需要每個成對組合。所以col3將包含9801行。 (01到01,01到02,...,01到99,02到01,...,02到99等) –

+1

那麼你有什麼嘗試?您將需要兩個循環,我建議您將所有內容加載到數組中,將另一個數組作爲輸出,然後將該輸出數組分配給列。 –

回答

1

相關的你的任務,你可以用下面的Excel VBA代碼片段:

Sub ColumnConcatenation() 
    Dim i As Long, j As Long 
    Const max = 99 
    Application.ScreenUpdating = False 
    For i = 1 To max 
     For j = 1 To max 
      Range("C" & (i - 1) * max + j) = Range("A" & i) & " to " & Range("B" & j) 
     Next j 
    Next i 
    Application.ScreenUpdating = True 
End Sub 

希望這有助於。

+1

如果你把9改成99,這個效果很好。謝謝。 –

+0

沒錯:您可以擴展解決方案以使用任何Integer。順便說一句,作爲供參考:這個特殊的問題轉化爲計算兩組笛卡爾乘積。最好的問候, –

+0

謝謝,感謝幫助! –

0

我幾乎沒有VBA的經驗,但這比我原先想象的更容易理解。

Sub pairwise() 

Dim x As Integer 
Dim x2 As Integer 
Dim x3 As Double 

x3 = 1 

For x = 1 To 99 
    For x2 = 1 To 99 

    Cells(x3, 5) = Cells(x, 1) 
    Cells(x3, 6) = Cells(x2, 2) 

    x3 = x3 + 1 

    Next 
Next 
End Sub 

這產生2個列,我可以然後通過在G1:G9801粘貼式=E1&" to "&F1串聯。如果有這樣一種更優雅的方式,我很樂意接受這個答案。

相關問題