簡體   English   中英

合並兩列中的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM