用分隔符连接一个(!)行
Concatenate one(!) row with separator
我有以下数据:
Surname: John Walter Friedrich
Name: Waterford Harrington from Downhill
新列中的每个单词(由 " "
分隔)(此处:"Surname:"=A1,"John"=B1,... "Friedrich"=D1) .
我有一个带有文本框的用户表单。
我想要的:将单元格 A1:(行中最后一个非空单元格)中的单词复制到用户窗体的文本框中。
-> 文本框填充:"John Walter Friedrich"
(由" "
分隔)
我尝试了各种代码,但没有找到任何符合我问题的代码。
我不想要的:合并行!那就是我发现的,但我只有一个文本框只有一行。所以我不想遍历每一行直到一行为空(因为下一行已满)。
PS: 我的Excelsheet里的数据不能用" "
分开来复制。问题:不应复制第一个单词(姓氏或名字)!
如果您的数据如下所示:
您可以通过从 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
我有以下数据:
Surname: John Walter Friedrich
Name: Waterford Harrington from Downhill
新列中的每个单词(由 " "
分隔)(此处:"Surname:"=A1,"John"=B1,... "Friedrich"=D1) .
我有一个带有文本框的用户表单。
我想要的:将单元格 A1:(行中最后一个非空单元格)中的单词复制到用户窗体的文本框中。
-> 文本框填充:"John Walter Friedrich"
(由" "
分隔)
我尝试了各种代码,但没有找到任何符合我问题的代码。
我不想要的:合并行!那就是我发现的,但我只有一个文本框只有一行。所以我不想遍历每一行直到一行为空(因为下一行已满)。
PS: 我的Excelsheet里的数据不能用" "
分开来复制。问题:不应复制第一个单词(姓氏或名字)!
如果您的数据如下所示:
您可以通过从 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