Excel 如果区域中的单元格为空。。。然后是空白。。。否则连接

Excel 如果区域中的单元格为空。。。然后是空白。。。否则连接,excel,Excel,下面的图片有助于澄清我的意思: 连接空单元格会留下一个,,因此我想更改公式,以便如果单元格在J2:P2范围内为空,则保留为空。否则,连接电子邮件地址 这有什么好办法 谢谢! 非VBA解决方案 使用 请注意,没有最后一个&如果(O2=“”,“,”,”) VBA解决方案 对于更大的范围,使用VBA将更简单。添加此自定义项: Function conc(r As Range) As String Dim c As Range For Each c In r If c.V

下面的图片有助于澄清我的意思:

连接空单元格会留下一个
,因此我想更改公式,以便如果单元格在
J2:P2
范围内为空,则保留为空。否则,
连接
电子邮件地址

这有什么好办法

谢谢!
非VBA解决方案

使用

请注意,没有最后一个
&如果(O2=“”,“,”,”)

VBA解决方案

对于更大的范围,使用VBA将更简单。添加此自定义项:

Function conc(r As Range) As String
    Dim c As Range
    For Each c In r
        If c.Value <> "" Then conc = conc & c.Value & ", "
    Next
    If Len(conc) > 0 Then conc = Left(Trim(conc), Len(Trim(conc)) - 1)
End Function
函数conc(r作为范围)作为字符串
调光范围
对于r中的每个c
如果c.值为“”,则conc=conc&c.值&“
下一个
如果Len(conc)>0,则conc=Left(修剪(conc),Len(修剪(conc))-1
端函数
然后这样称呼它:
=conc(J2:O2)


要添加自定义项,请按ALT+F11,创建新模块并将代码粘贴到其中:


非VBA解决方案

使用

请注意,没有最后一个
&如果(O2=“”,“,”,”)

VBA解决方案

对于更大的范围,使用VBA将更简单。添加此自定义项:

Function conc(r As Range) As String
    Dim c As Range
    For Each c In r
        If c.Value <> "" Then conc = conc & c.Value & ", "
    Next
    If Len(conc) > 0 Then conc = Left(Trim(conc), Len(Trim(conc)) - 1)
End Function
函数conc(r作为范围)作为字符串
调光范围
对于r中的每个c
如果c.值为“”,则conc=conc&c.值&“
下一个
如果Len(conc)>0,则conc=Left(修剪(conc),Len(修剪(conc))-1
端函数
然后这样称呼它:
=conc(J2:O2)


要添加自定义项,请按ALT+F11,创建新模块并将代码粘贴到其中:


非VBA解决方案

使用

请注意,没有最后一个
&如果(O2=“”,“,”,”)

VBA解决方案

对于更大的范围,使用VBA将更简单。添加此自定义项:

Function conc(r As Range) As String
    Dim c As Range
    For Each c In r
        If c.Value <> "" Then conc = conc & c.Value & ", "
    Next
    If Len(conc) > 0 Then conc = Left(Trim(conc), Len(Trim(conc)) - 1)
End Function
函数conc(r作为范围)作为字符串
调光范围
对于r中的每个c
如果c.值为“”,则conc=conc&c.值&“
下一个
如果Len(conc)>0,则conc=Left(修剪(conc),Len(修剪(conc))-1
端函数
然后这样称呼它:
=conc(J2:O2)


要添加自定义项,请按ALT+F11,创建新模块并将代码粘贴到其中:


非VBA解决方案

使用

请注意,没有最后一个
&如果(O2=“”,“,”,”)

VBA解决方案

对于更大的范围,使用VBA将更简单。添加此自定义项:

Function conc(r As Range) As String
    Dim c As Range
    For Each c In r
        If c.Value <> "" Then conc = conc & c.Value & ", "
    Next
    If Len(conc) > 0 Then conc = Left(Trim(conc), Len(Trim(conc)) - 1)
End Function
函数conc(r作为范围)作为字符串
调光范围
对于r中的每个c
如果c.值为“”,则conc=conc&c.值&“
下一个
如果Len(conc)>0,则conc=Left(修剪(conc),Len(修剪(conc))-1
端函数
然后这样称呼它:
=conc(J2:O2)


要添加自定义项,请按ALT+F11,创建新模块并将代码粘贴到其中:


为了避免在例如仅填充J2和L2时出现额外的逗号,请尝试将
连接到每个单元格值的开始处,。然后使用REPLACE删除开始时不需要的额外逗号,即


=替换(IF(J2=“”、“、”、“&J2)&IF(K2=“”、“、”、“&K2)&IF(L2=“”、“、”、“&L2)&IF(M2=“”、“、”、“&M2)&IF(N2=“”、“、”、“&N2)&IF(O2=“”、“、”、“&O2”)1,2“)
以避免在以下情况下使用额外的逗号,例如,只有J2和L2被填充。请尝试将
连接到每个单元格值的开始处,。然后使用REPLACE删除开始时不需要的额外值,即


=替换(IF(J2=“”、“、”、“&J2)&IF(K2=“”、“、”、“&K2)&IF(L2=“”、“、”、“&L2)&IF(M2=“”、“、”、“&M2)&IF(N2=“”、“、”、“&N2)&IF(O2=“”、“、”、“&O2”)1,2“)
以避免在以下情况下使用额外的逗号,例如,只有J2和L2被填充。请尝试将
连接到每个单元格值的开始处,。然后使用REPLACE删除开始时不需要的额外值,即


=替换(IF(J2=“”、“、”、“&J2)&IF(K2=“”、“、”、“&K2)&IF(L2=“”、“、”、“&L2)&IF(M2=“”、“、”、“&M2)&IF(N2=“”、“、”、“&N2)&IF(O2=“”、“、”、“&O2”)1,2“)
以避免在以下情况下使用额外的逗号,例如,只有J2和L2被填充。请尝试将
连接到每个单元格值的开始处,。然后使用REPLACE删除开始时不需要的额外值,即


=替换(IF(J2=”、“、”、“&J2)&IF(K2=”、“、”、“&K2)&IF(L2=”、“、”、”、“&M2)&IF(N2=”、“、”、“&N2)&IF(O2=”、“、”、”、“&O2)、1,2-”
/p>您能显示当前的公式吗?当然:
=CONCATENATE(G3=”、“、”、”、“、”、“、”、”、“、”、“、”、”、“、”、”、”、”、“&M2)&M2)&IF(如果(N2=”、“、”、“、”、”、“、”、”、”、”、”、“、”、”、”、”、”、“、”、”、”、”、”、”、”、”、”、”、“、”、“(J2=“”、“、”、”)和K2&IF(K2=“”、“、”、”)和L2&IF(L2=“”、“、”、”、“、”、”、“、”)和N2&IF(N2=“”、“、”、”)&O2
。不确定是否有更有效的方法只使用公式。我会尝试一下。谢谢!最巧妙的方法可能是使用VBA函数,该函数接受所需的范围并返回连接的字段,但是在连接中使用大量if语句也是可能的。您是否喜欢使用pu重新使用Excel函数或获取定制函数的VBA?您可以显示您当前的公式吗?当然:
=CONCATENATE(G3,“,”H3,“,”I3,“,”J3,“,”K3,“,”L3,“,”M3,“,”N3,”,”O3)
您可以使用类似于以下内容的
=J2&IF(J2=“”,”,“,”,”,”,”K2&IF(K2=“”,”,”,”,”L2&IF(L2=“”,”,“,”,”,”,“,”,”,”,“,”,”,”,“,”,”,”,“,”,”,”N2&IF(N2),“,”,”,”,”&O2
。不确定是否有更有效的方法只使用公式。我会尝试一下。谢谢!最巧妙的方法可能是使用VBA函数,该函数接受所需的范围并返回连接的字段,但是在连接中使用大量if语句也是可能的。您是否喜欢使用pu重新使用Excel函数或获取定制函数的VBA?能否显示当前的公式?当然:
=连接(G3,