需要帮助创建Excel宏。我有一个Excel工作表.Excel工作表不一致。 我打算让它统一和有条理。
例如
A B C D
1 test tester tester
2 hai test
3 Bye test tested
4 GN test tested Fine
A B C D
1 test testertester
2 hai test
3 Bye testtested
4 GN testtestedFine
基本上我必须找到放置元素的最后一个单元格,以便我可以编写我的CONCATENATE函数。
在这种情况下,它将是D列,因此我的连接函数就是 = CONCATENATE(B1,C1,D1) 我想再次将结果存在于B1中,但如果我不得不隐藏则不是问题。
有人可以帮我这么做吗?
答案 0 :(得分:4)
您可以使用以下VBA函数连接(连接)任意范围的单元格中的值,并使用可选的分隔符。
Public Function Join(source As Range, Optional delimiter As String)
Dim text As String
Dim cell As Range: For Each cell In source.Cells
If cell.Value = "" Then GoTo nextCell
text = text & cell.Value & delimiter
nextCell:
Next cell
If text <> "" And delimiter <> "" Then
text = Mid(text, 1, Len(text) - Len(delimiter))
End If
Join = text
End Function
有关如何使用该功能的示例,请在电子表格的任意位置输入= JOIN(A1:D1)。
答案 1 :(得分:2)
= B1&安培; C1&安培; D1
或
Adam已经优化的功能。
Function Join(source As Range, Optional delimiter As String) As String
'
' Join Macro
' Joins (concatenates) the values from an arbitrary range of cells, with an optional delimiter.
'
'optimized for strings
' check len is faster than checking for ""
' string Mid$ is faster than variant Mid
' nested ifs allows for short-circuit
' + is faster than &
Dim sResult As String
Dim oCell As Range
For Each oCell In source.Cells
If Len(oCell.Value) > 0 Then
sResult = sResult + CStr(oCell.Value) + delimiter
End If
Next
If Len(sResult) > 0 Then
If Len(delimiter) > 0 Then
sResult = Mid$(sResult, 1, Len(sResult) - Len(delimiter))
End If
End If
Join = sResult
End Function