Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用分隔符连接一个(!)行_Excel_Vba_Concatenation_Userform - Fatal编程技术网

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

Excel 用分隔符连接一个(!)行,excel,vba,concatenation,userform,Excel,Vba,Concatenation,Userform,我有以下资料: Surname: John Walter Friedrich Name: Waterford Harrington from Downhill 新列中的每个单词(由“””分隔)(此处:“姓氏:”=A1,“约翰”=B1,…“弗里德里希”=D1) 我有一个带有文本框的用户表单 我想要的是:将A1单元格中的单词:(行中最后一个非空单元格)复制到Userform中的文本框中。 ->文本框中填充:“John Walter Friedrich”(用“分隔) 我尝试了各种代码,但没有找到任何

我有以下资料:

Surname: John Walter Friedrich
Name: Waterford Harrington from Downhill
新列中的每个单词(由“
”分隔)(此处:“姓氏:”=A1,“约翰”=B1,…“弗里德里希”=D1)

我有一个带有文本框的用户表单

我想要的是:将A1单元格中的单词:(行中最后一个非空单元格)复制到Userform中的文本框中。 ->文本框中填充:
“John Walter Friedrich”
(用
分隔)

我尝试了各种代码,但没有找到任何与我的问题相匹配的代码

我不想要的是:合并行!这就是我发现的,但我有一个文本框,只有一行。所以我不想在每一行中都看到一行是空的(因为下一行是满的)


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

如果您的数据如下所示:

您可以通过从列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

如果您的数据如下所示:

您可以通过从列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
测试这一点:

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
测试这一点:

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

“我尝试了各种代码”请回答您的问题并添加您尝试过的代码,这样我们就可以帮助您。可能你的工作表截图会澄清哪个单元格中有什么。很抱歉,我没有及时回答,请参阅下面的“我尝试了各种代码”。请回答你的问题并添加你尝试过的代码,以便我们可以帮助你。也许你的工作表的截图会澄清哪个单元格中有什么。很抱歉,我的回答太晚了,见下文