在Excel中折叠date列中的空列

我有一个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 

我试过这个,但是它为每一个空白列创build了世纪date的转折点。 TEXT(A1,“m / d / yyyy”)和TEXT(B1,“m / d / yyyy”)。 。 。

我怎样才能避免呢? 或者,还有更好的方法?

因为Excel公式可以添加date,假设行中的其他4个单元格是真正的空白,那么可以写下这个公式:

 =Sum(B1:B5) 

发现这个非常酷的自定义函数,通过Excel VBA函数轻松地将整个范围组合起来,将非空单元格与用户定义的分隔符连接起来 :

 =ConcatenateRange(B1:B5,"") 

使用自定义function:

 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