Как обрезать менее 30 символов и удалить в Excel VBA? - PullRequest
0 голосов
/ 28 января 2019

У меня есть лист Excel с несколькими строками описаний в одном столбце. Я стремлюсь получить формулу, которая усечет ее до определенного предела, например, до 30 символов, и если усечение остановится на 30 символах в середине.слова, затем я удаляю это последнее слово.

Вот формула, которую я пытаюсь заставить работать.

=LEFT(A1,FIND(" ",A1,30)-1)

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Метод без петель

=IF(LEN(A2)<30,A2,LEFT(A2,FIND("}}}",SUBSTITUTE(A2," ","}}}",30-LEN(SUBSTITUTE(LEFT(A2,30)," ",""))))-1))

enter image description here

0 голосов
/ 28 января 2019

Попробуйте что-то вроде этого: Вставьте модуль в VBA Editor (ALT + F11) -> Вставить новый модуль.

Когда вы пропустите этот код, вы можете вызывать его из любой ячейки с помощью "= NotTruncateWord (A1; 30) "

Есть некоторые настройки, потому что трудно понять, что такое Слово (что-то после пробела?), Я спрашиваю, потому что, если кто-то напишет строку из 35 символов без пробела, ябудет считать слово и удалять все?


Открытая функция NotTruncateWord (Value, Limit)

LastSpaceBeforeLimit = 0
FirstSpaceAfterLimit = 9999

Phrase_Lenght = Len(Value)
If Phrase_Lenght > Limit Then

    For i = 1 To Phrase_Lenght
        check = Mid(Value, i, 1)
        If Asc(check) = 32 Then
           If i < Limit Then
              LastSpaceBeforeLimit = i
              ElseIf i < FirstSpaceAfterLimit Then
              FirstSpaceAfterLimit = i
           End If
        End If
    Next


    If LastSpaceBeforeLimit > 0 Then
       NotTruncateWord = Left(Value, LastSpaceBeforeLimit)
       Else
       NotTruncateWord = Left(Value, Limit)
    End If

    Else
    'no need to truncate
    NotTruncateWord = Value
End If

End Function

0 голосов
/ 28 января 2019

Используйте AGGREGATE, чтобы найти последний пробел в первых 31 символах.

=LEFT(A2, AGGREGATE(14, 7, ROW($1:$31)/(MID(A2&" ", ROW($1:$31), 1)=" "), 1) -1)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...