我正在使用Excel制作发票系统。 我有一个日期和客户列表。 每个日期都需要一项服务,一个数字表示输入的小时数,基本上是一份工作单。 我希望发票显示客户预订的日期列表。 我在Google表格中做到了这一点,并通过它工作:
=arrayformula(concatenate(if(not(ISBLANK(B2:D2)),text(B1:D1,"dd/MM/yyyy")&", ","")))
我现在已经花了好几周的时间来尝试做类似的事情,但是空白了。 任何人都知道如何在Excel中执行此操作? 谢谢, 克里斯
答案 0 :(得分:0)
由于您使用Excel 2016,我相信您可以使用:
=CONCAT(IF(NOT(ISBLANK(B2:D2)),TEXT(B1:D1,"dd/MM/yyyy")&", ",""))
以数组公式** 输入。
不幸的是我没有那个版本,因此我无法验证这一点。
我还应该补充一点,TEXTJOIN
可能是一个效率最低的选择:
https://support.office.com/en-us/article/TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c
此致
**数组公式的输入方式与'标准'相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。
答案 1 :(得分:0)
2016年之前:
Sub Concat_Vals()
Dim r As Range
Dim Result As String
For Each r In Range("A1:D1")
If Len(r.Offset(1, 0)) > 0 Then
Result = Result & ", " & r
End If
Next r
Result = Mid(Result, 3)
Range("A10").Value = Result
End Sub
将连接的结果返回到单元格A10
,并在范围A1:D1
上运行(根据上面的要求更改)。
或者,作为UDF:
Function Concat_Vals(Rng As Range)
For Each r In Rng
If Len(r) > 0 Then
Result = Result & ", " & Cells(1, r.Column)
End If
Next r
Concat_Vals = Mid(Result, 3)
End Function
此致