excel - 减少单元格中的换行数/chr(10)

标签 excel vba excel-formula newline

我有一个 Excel 工作表,其中的单元格具有不同数量的换行符,我想减少它,以便每个新行之间只有一个换行符。

例如

HELLO




WORLD



GOODBYE

将修改为:

HELLO 

WORLD

GOODBYE

我已经为此绞尽脑汁好几个小时了,并想出了一些方法,但没有一个非常有效或产生最好的结果。

这变得特别困难,因为我正在处理的数据集在换行符之前有空格。

enter image description here

因此常规解析不起作用。

我尝试将单元格中的所有 chr(10) 实例替换为 ~ 以使其更易于使用,但我仍然没有使其达到精确的数量。我想知道是否有更好的方法。

这是我到目前为止所拥有的:

 myString = Replace(myString, Chr(10), "~")

    Do While InStr(myString, "~~") > 0
        str1 = Split(myString, "~")
        For k = 0 To UBound(str1)
        myString = Replace(myString, "~~", "~")
        Next k
    Loop

    Do While InStr(myString, "   ~") > 0
        str1 = Split(myString, "~")
        For k = 0 To UBound(str1)
        myString = Replace(myString, "  ~", "")
        Next k
    Loop

myString = Replace(myString, "   ~", " ~")
myString = Replace(myString, " ~", "~")
myString = Replace(myString, "~", Chr(10))

Cells(2, 2).Value = myString

因此,我使用一些 do while 循环来捕获不同类型的换行符(或在本例中为波浪线)的实例,但我认为这不是解决此问题的最佳方法。

我正在考虑如何循环遍历单元格中的字符,如果存在多个 chr(10) 的实例,请将其替换为 ""

所以伪代码看起来像:

for i to len(mystring)
    if mystring(i) = chr(10) AND myString(i+1) = chr(10) Then
       myString(i + 1) = ""

但不幸的是我认为这不可能通过 vba 实现。

如果有人好心帮助我调整当前的代码或帮助我处理上述伪代码,我将不胜感激!

最佳答案

您可以使用公式来完成:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A1)," ","|"),"|"&CHAR(10)," "),CHAR(10)," "))," ",CHAR(10)),"|"," ")

这会将所有空格更改为 |,然后将 Char(10) 更改为空格。修剪去除了多余的空间。我们反转,空格为 Char(10)| 为空格。

enter image description here


VBA:

Function manytoone(str As String)
    str = Replace(Application.Trim(str), " ", "|")
    str = Replace(str, "|" & Chr(10), " ")
    str = Replace(str, Chr(10), " ")
    str = Application.Trim(str)
    str = Replace(str, " ", Chr(10))
    str = Replace(str, "|", " ")
    manytoone = str

End Function

enter image description here

关于excel - 减少单元格中的换行数/chr(10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402311/

相关文章:

excel - 从查找公式返回单元格引用而不使用匹配

excel - 自动更新数值增量

c# - Aspose 或电子表格设备

java - HashMap 到 csv/excel 很容易吗?

Excel 宏什么都不做?

excel - 从另一个工作表中选择一个复选框

excel - 从 Excel VBA 修复 PowerPoint 幻灯片中的文本框(右侧)

excel - 使用表单复选框取消隐藏/隐藏excel中的行

vba - 根据每日价格时间序列计算每周 yield

excel - 如何返回在 VBA 中传递给它的(变体)变量的维数