У Стивена есть рабочий лист с большим количеством текста. В ячейках в столбце A он хочет удалить все, что может произойти перед заданной последовательностью символов, например, все, что было до = XX =. В каждой ячейке может быть несколько экземпляров этих символов, но Стивен хочет удалить все до первого появления.
Один из способов сделать это – использовать формулу. Например, следующая формула вычислит все, что находится в ячейке A1, и просто вернет все до символов = XX =. Если символы не найдены в ячейке, возвращается вся ячейка:
= RIGHT (A1, IF (ISERROR (FIND ("= XX =", A1,1)), LEN (A1), LEN (A1) -FIND ("= XX =", A1,1) +1))
Если вместо этого вы хотите, чтобы не возвращалось первое вхождение = XX = все, что вам нужно сделать, это изменить +1 в конце формулы на -3.
Если вы предпочитаете решение на основе макросов, вы можете использовать процедуру, подобную следующей. Он проверяет все выбранные в данный момент ячейки, а затем удаляет все, что находится перед последовательностью = XX =.
Sub DeleteToSequence () Dim rCell As Range Dim sSeq As String Dim x As Long sSeq = "= XX = "Для каждой выбранной rCell x = InStr (rCell.Value, sSeq) Если x> 0, то rCell.Value = Mid (rCell, x) End If Next Set rCell = NothingEnd Sub
Вы следует знать, что этот макрос может вызывать некоторые ошибки, особенно когда то, что вы ищете, начинается со знака равенства (например, = XX =). Когда строка, начинающаяся со знака равенства, вставляется обратно в ячейку, вы получите #NAME? ошибка, потому что Excel пытается проанализировать ячейку, как если бы она содержала формулу.
Если вы хотите удалить все до последовательности символов, используйте эту строку в середине процедуры:
rCell.Value = Mid (rCell, x + Len (sSeq))