我有一个excel电子表格,每个标题包含多列。我想将它们折叠成一列。出于某种原因,用户将应该分成五列的内容分散到一列中。 鉴于此:
+------------+-----------+-----------+-----------+-----------+--+
| | | DOB | | | |
+------------+-----------+-----------+-----------+-----------+--+
| | | 1/7/1980 | | | |
| | | | | 1/30/1947 | |
| | | | 3/12/1948 | | |
| | | 1/26/1941 | | | |
| | 6/26/1951 | | | | |
| 12/29/1974 | | | | | |
+------------+-----------+-----------+-----------+-----------+--+
我想要这个:
DOB
1/7/1980
1/30/1947
3/12/1948
1/26/1941
6/26/1951
12/29/1974
我尝试了这个,但它为每个空白列创建了世纪日期。 TEXT(A1,“m / d / yyyy”)& TEXT(B1,“m / d / yyyy”)。 。
我该如何避免?或者有更好的方法吗?
答案 0 :(得分:2)
因为Excel公式可以添加日期,假设行中的其他4个单元格真的是空白,您可以写下这个公式:
=Sum(B1:B5)
答案 1 :(得分:0)
发现这个非常酷的自定义功能,可以通过Excel VBA function to concatenate non-empty cells with a user defined seperator轻松组合整个范围:
=ConcatenateRange(B1:B5,"")
使用自定义功能:
Function ConcatenateRange(ByVal cell_range As Range, _
Optional ByVal seperator As String) As String
Dim cell As Range
Dim newString As String
Dim cellArray As Variant
Dim i As Long, j As Long
cellArray = cell_range.Value
For i = 1 To UBound(cellArray, 1)
For j = 1 To UBound(cellArray, 2)
If Len(cellArray(i, j)) <> 0 Then
newString = newString & (seperator & cellArray(i, j))
End If
Next
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(seperator)))
End If
ConcatenateRange = newString
End Function