用分隔符连接一个(!)行

时间:2019-07-09 09:54:19

标签: excel vba concatenation userform

我有以下数据:

Surname: John Walter Friedrich
Name: Waterford Harrington from Downhill

新列中的每个单词(用" "分隔)(此处:“姓:” = A1,“约翰” = B1,...“弗里德里希” = D1)。

我有一个带有文本框的用户窗体。

我想要什么:将单词从单元格A1 :(行中最后一个不是空单元格)复制到用户窗体的文本框中。 ->文本框填充:"John Walter Friedrich"(由" "分隔)

我尝试了各种代码,但是没有找到与我的问题相符的东西。

我不想要的:合并行!那就是我发现的东西,但是我只有一个文本框只有一行。所以我不想遍历每一行,直到一行为空(因为下一行已满)。

PS:我无法在Excel工作表中用" "分隔的数据进行复制。问题:不应复制第一个单词(姓或名)!

2 个答案:

答案 0 :(得分:0)

如果您的数据如下所示:

enter image description here

您可以通过从B列循环到最后使用的列来串联它们。要查找连续使用的最后一个单元格,请使用

Set LastUsedCellInRow = ws.Cells(RowNumber, ws.Columns.Count).End(xlToLeft)

所以您最终会得到类似的东西:

Option Explicit

Public Sub TestConcat()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")

    Dim RowNumber As Long
    RowNumber = 2

    Dim LastUsedCellInRow As Range
    Set LastUsedCellInRow = ws.Cells(RowNumber, ws.Columns.Count).End(xlToLeft)

    MsgBox ConcatenateSpaced(ws.Range("B" & RowNumber, LastUsedCellInRow))
End Sub

Public Function ConcatenateSpaced(InputRange As Range) As String
    If InputRange.Rows.Count = 1 Then
        Dim cell As Range
        For Each cell In InputRange
            ConcatenateSpaced = ConcatenateSpaced & " " & cell.Value
        Next cell
    End If

    ConcatenateSpaced = Trim$(ConcatenateSpaced)
End Function

答案 1 :(得分:0)

对此进行测试:

Public Sub Test()

    Dim InputText As String
    InputText = "Surname: John Walter Friedrich"  'or Worksheets("Sheet1").Range("A1").Value

    MsgBox Right$(InputText, Len(InputText) - InStr(1, InputText, " "))

End Sub