2017-07-21 15 views
0

在Excel中,我需要将每个其他单元格连接成一个“主”单元格。我使用这个公式在=SUBSTITUTE(TRIM(G2 & " " & BC2 & " " & BE2 & " " & BG2), " ", ", ")之前征服,但是当我连接的数据中有一个逗号时,这会改变数据。连接如果不是空列表和逗号

我需要连接的单元格范围是从G2到BG2的其他所有单元格。什么是最好的行动,使这发生处理连接,涉及逗号列表?

编辑
通过什么我会改变数据的意思是,这

S223 - Pills, S2323 - Patterns - Backstock, 1/Var 

颇有些前一阵子与上述

S223, -, Pills,, S2323, -, Patterns, -, Backstock,, 1/Var 
+0

TEXTJOIN(),它在office 365 excel中可用。它有能力忽略空白单元格。 –

+0

你是什么意思“当我有逗号时改变数据”。此公式连接所有值,修剪开始和结束空白,然后用逗号和空格替换任何空格。它不会改变数据中的现有空间。我怀疑你可能想要在现有的替代函数中使用'SUBSTITUTE(TRIM(....),“,”,“;”)'来用数字或分号交换数据中的逗号......? – JNevill

+0

@JNevill - 请参阅我的编辑 – BellHopByDayAmetuerCoderByNigh

回答

0

公式变成:这一点,我发现这个代码在网上为我需要它为我的个人项目。它所做的是接收一个字符串并用指定的字符替换每个“不允许的”值。在你的情况下,我会想象你允许除“,”之外的每个字符,并用“”或“”替换它。这样一来,A, - ,B, - ,C,将成为A - B - C^

Function cleanString(text As String) As String 

    Dim output As String 
    Dim c 
    For i = 1 To Len(text) 
     c = Mid(text, i, 1) 
     If (c >= "a" And c <= "z") Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z" Or c = " " Or c = "-" Or c = "é" Or c = "É" Or c = "_") Then ' <=list of allowed values in a string 
      output = output & c 
     Else 
      output = output & " " '<= what unallowed values gets replaced by 
     End If 
    Next 
    cleanString = output 
End Function 

希望这可以帮助,我认为VBA,你在你的问题中新增了标签。

+0

我的解决方案建议使用您的公式“清理”字符串后,而不是找到一个更好的配方,这似乎很难通过查看所有评论。 –

+0

我将如何使用此功能?我知道要放在模块中,但之后呢? – BellHopByDayAmetuerCoderByNigh

+0

基本上,我想你会在你的工作簿中设计一些onChangeEvent,调用这个子输入字符串是你的单元格的值 –

0

answers.microsoft.com以下UDF应该是你以后

Function TEXTJOIN(delimiter As String, ignore_empty As String, ParamArray textn() As Variant) As String 
    Dim i As Long 
    For i = LBound(textn) To UBound(textn) - 1 
     If Len(textn(i)) = 0 Then 
      If Not ignore_empty = True Then 
       TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
      End If 
     Else 
      TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
     End If 
    Next 
    TEXTJOIN = TEXTJOIN & textn(UBound(textn)) 
End Function 
相关问题