У меня есть лист Excel, в котором есть ячейки с переменным количеством разрывов строк, и я хочу уменьшить его, чтобы между каждой новой строкой был только один разрыв строки.
Например,
HELLO
WORLD
GOODBYE
будет изменено на:
HELLO
WORLD
GOODBYE
Я часами ломал голову над этим и придумал несколько способов, но ни один из них не очень эффективен или не дает наилучших результатов.
Это особенно сложно, потому что я работаю с набором данных, у которого есть пробелы, предшествующие разрывам строк.
И поэтому обычный анализ не работает так же.
Я пытался заменить все экземпляры 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.
Если кто-нибудь проявит любезность, чтобы помочь мне скорректировать мой текущий код или помочь мне с вышеупомянутым псевдокодом, это будет с благодарностью!