删除最后一位数字之后的字符

时间:2019-12-02 14:14:58

标签: excel vba formatting

我正在使用的代码将列中的数字格式化为字符串,并用逗号分隔数字。工作到一定程度。例如。我的“连接”为逗号分隔字符串的范围有398个可能的单元格(即std::unique_ptr),例如数据以A2:A400开头,我得到了一个完美的字符串,但是如果它来自例如A300:A400,然后最后一个数字后会出现30个逗号(A300:A370)。示例:

,

A300:A400 = ...-0.12345,0.34232,0.221312,0.231132

因此,该代码拾取了A300:A370 = ...-0.3345,0.014332,0.0021,-0.120031,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,A370之间的空白文件,并添加了逗号。我不要在最后一位数字后加逗号,因为范围A400就是这种情况。请指教。谢谢

A300-A400

1 个答案:

答案 0 :(得分:2)

以下公式将为您提供所需的结果,只需在D2单元格中输入即可:

=TEXTJOIN(",",TRUE,A2:A400)

Textjoin的作用类似于连接,但可以使用定界符作为参数,它还使您能够忽略空白单元格,第一个参数是定界符,第二个是忽略空白的标志,第三个是用于范围的标志。

TEXTJOIN仅适用于Office 365订阅者,一种可能的替代方法是按以下方式构建您的UDF,这将允许您使用上面的公式而无需Office 365订阅:

Function TEXTJOIN(delimiter As String, ignore_empty As Boolean, rng As Range) As String
Dim compiled As String
For Each cell In rng
    If ignore_empty And IsEmpty(cell.Value) Then
        'nothing
    Else
        compiled = compiled + IIf(compiled = "", "", delimiter) + CStr(cell.Value)
    End If
Next
TEXTJOIN = compiled
End Function

作为TEXTJOIN的替代方法,如注释所建议的那样,您可以在将rng.Value = ""附加到字符串之前添加另一项检查以查看是否Sub Coltocommadelimitstring() Dim rng As Range Dim InputRng As Range, OutRng As Range Set InputRng = ThisWorkbook.Sheets(1).Range("A2:A400") Set OutRng = ThisWorkbook.Sheets(1).Range("D2") outStr = "" For Each rng In InputRng If outStr = "" Then outStr = rng.Value Else If rng.Value <> "" Then outStr = outStr & "," & rng.Value End If Next OutRng.Value = outStr End Sub ,如下所示:

SharedService