gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:58:45 31 4
gpt4 key购买 nike

我有一个 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com