[英]Merging text in two columns
如何在電子表格的兩列中查找和合並文本,然后刪除第二列?
第一個標題為Postnr,第二個標題為Postort。 我想將這些列中的文本與原始文本之間的兩個空格合並。
范例 :
| Postnr | Postort |
| 752 65 | Gothenburg |
運行代碼后的結果:
Postaddress
752 65 Gothenburg
我的代碼來查找並選擇Postnr
Dim rngPostnr As Range
Set rngPostnr = Range("A1:Z1").Find("Postnr")
Range(rngPostnr, rngPostnr.End(xlDown)).Select
我知道如何在工作表中執行此操作,但是我想要一個宏,因為我每天要執行多次此操作。
我不想手動定位和標記這些列,因為我的工作表中有很多列。
我需要一個宏來查找列並將它們連接起來,然后將其刪除,並使用連接的值(最好是標頭Postaddress)創建一個新列。
我了解您不知道該列的位置(但它在第一行中)。
第一行的第一次迭代將找到您的列,然后遍歷每個找到的列號的值,構建新字符串並將其寫入第10列(或任何其他列)。 您可以根據需要添加其他邏輯,例如何時停止迭代(當一個lastRow
大於另一個時,等等)。
這是您以后可以使用的基本工作代碼:
Sub findAndConcat()
'last column with data
lColumn = Cells(1, Columns.Count).End(xlToLeft).Column
'find Postnr and Postort columns
For i = 1 To lColumn
If Cells(1, i) = "Postnr" Then
PostnrColumn = i
'Convert from column number to column letter
PostnrColumnName = Split(Cells(, PostnrColumn).Address, "$")(1)
End If
If Cells(1, i) = "Postort" Then
PostortColumn = i
PostortColumnName = Split(Cells(, PostortColumn).Address, "$")(1)
End If
Next i
Dim PostnrValue As String
Dim PostortValue As String
Dim newString As String
'last row with data per column
PostnrLastRow = ActiveSheet.Cells(Rows.Count, PostnrColumnName).End(xlUp).Row
PostortLastRow = ActiveSheet.Cells(Rows.Count, PostortColumnName).End(xlUp).Row
'Iterating the columns rows and building the new concatinated string
For i = 2 To PostnrLastRow
PostnrValue = Cells(i, PostnrColumn).Value
PostortValue = Cells(i, PostortColumn).Value
newString = PostnrValue & " " & PostortValue
ActiveSheet.Cells(i, 10).Value = newString
Next i
End Sub
結果如下:
如果要在工作表內執行此操作,則在公式谷倉上應使用如下所示的concatanate: =CONCATENATE(A2;" ";B2)
如果要在vba中實現此目標,則必須使用類似以下的內容:
ActiveCell.Offset(0, 3).Value = ActiveCell.Value & " " & ActiveCell.Offset(0, 1).Value
要連接的單元格的第一個單元格為activecell(Postnr),下一個單元格(偏移量為0,1 | Postort)為第二個單元格,結果將進一步插入到新列中。
編輯2:因為您的問題不夠清楚,所以我將添加另一種方法。 也許您想將第二列“添加”到第一列(將各列合並為一個)。 您只能使用vba做到這一點。
您必須執行以下操作:
ActiveCell.Value = ActiveCell.Value & " " & ActiveCell.Offset(0, 1).Value
我知道如何在工作表中執行此操作,但是由於我每天要執行多次此操作,因此我想使用宏來執行此操作。
我也了解您的vba,但是要使其正常工作,我需要標記單元格或它自己定位postnr和postadress列。 我不想自己定位和標記這些列,因為這很浪費時間,因為我的工作表中有很多列。 你明白我的意思嗎?
我需要一個宏來定位這些列並將它們連接起來並刪除它們,並使用連接的值創建一個新列,最好使用標題Postaddress
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.