Vba удалить символы в ячейке excel

0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

1

Удаление символов в ячейке ексель

28.07.2014, 02:57. Показов 20691. Ответов 4


Студворк — интернет-сервис помощи студентам

Приветствую.
Опыта нет.
Требуется обработать файл ексель — 2003 с помощью макроса.

1. Замена комбинаций символов — в примере » » (двойной пробел) на » » (одиночный пробел)
2. Замена комбинаций символов — в примере «, ,» (запятая пробел запятая) на «,» (запятая)
3. Удаление в начале текста ячейки пробела
4. Удаление символа «,» (запятая) в конце текста ячейки — именно запятую а не последний символ.

Обработка всего листа по всем столбцам с данными.
Если возможно прошу прописать комментарии по формулам для последующего самостоятельного изменения текста или условий.

Заранее благодарен.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

28.07.2014, 02:57

4

ViterAlex

8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

28.07.2014, 04:56

2

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub test()
    'Поиск и замена
    Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=", ,", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Dim cell As Range 'переменная для перебора ячеек
        Dim r As Range 'переменная для диапазона используемых ячеек
        Set r = ActiveSheet.UsedRange 'Все используемые ячейки
    For Each cell In r.Cells
        'Если один символ справа равен ","
        If Right(cell.Value, 1) = "," Then
            'замена значения ячейки на то же значение, но без последнего символа
            cell.Value = Left(cell.Value, Len(cell.Value) - 1)
        End If
    Next
End Sub



1



olegerius

0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

28.07.2014, 05:11

 [ТС]

3

Спасибо за ответ.
И по аналогии добавил удаление первого пробела в строке…

Добавлено через 6 минут

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub test()
'Поиск и замена
Cells.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:=", ,", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Dim cell As Range 'переменная для перебора ячеек
Dim r As Range 'переменная для диапазона используемых ячеек
Set r = ActiveSheet.UsedRange 'Все используемые ячейки
For Each cell In r.Cells
'Если один символ справа равен ","
If Right(cell.Value, 1) = "," Then
'замена значения ячейки на то же значение, но без последнего символа
cell.Value = Left(cell.Value, Len(cell.Value) - 1)
End If
If Left(cell.Value, 1) = " " Then
'замена значения ячейки на то же значение, но без первого символа
cell.Value = Right(cell.Value, Len(cell.Value) - 1)
End If
Next
End Sub



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

28.07.2014, 06:32

4

Пробелы в начале и конце строки можно (и нужно) убирать функцией Trim



0



0 / 0 / 0

Регистрация: 28.07.2014

Сообщений: 3

28.07.2014, 11:18

 [ТС]

5

Прошу прощения за лохизм — пример нужен с условием.



0



You can remove characters by replacing a character with an empty string («»). Although you can do this by going through all such cells in a selection or specified range using Find & Replace, in this article we’re going to show you how to remove characters in Excel using VBA. This method can help you integrate this with other calculations and automate the process.

How to remove characters in Excel using VBA

There are 2 separate functions that we need to look at here:

  • Find
  • Replace

We need to use the Replace method to perform a removing action. For this, there are two parameters we should focus:

  • What: String that we want to remove
  • Replacement: Replacement value, which should be an empty string («») for removing the characters

You can assign these values into variables, or directly use them as an argument which is the case in the sample code we’re going to be using.

Alternatively, you can replace within a predetermined range, instead of a selected range. To do this, replace the Selection object with a Range object. You can find both examples at below.

You can use the code in two ways:

  • Module
  • Immediate Window

In the Module method, you need to add the module into the workbook or the add-in file. Copy and paste the code into the module to run it. The main advantage of the module method is that it allows saving the code in the file, so that it can be used again later. Furthermore, the subroutines in modules can be used by icons in the menu ribbons or keyboard shortcuts. Remember to save your file in either XLSM or XLAM format to save your VBA code.

The Immediate Window method, on the other hand, is essentially a quick and dirty method where you can simply copy and paste the code into the Immediate Window and press the Enter key to run it. Unfortunately, any code you use in the Immediate Window will not be saved. Also note that icons and keyboard shortcuts will not be available.

Remove a character in a selection

Module Version:

Sub RemoveCharacterInSelection

      Dim oldValue As String, newValue As String

     

      oldValue = "e"

      newValue = "" 'Because we want to remove

     

      'oldValue and newValue variables are used as arguments

      Selection.Cells.Replace What:= oldValue, Replacement:= newValue, _

            LookAt:=xlPart, SearchOrder:=xlByRows, _

            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

Immediate Window version (no variables):

Selection.Cells.Replace What:="e", Replacement:="", _

            LookAt:=xlPart, SearchOrder:=xlByRows, _

            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Remove a character in a specified range

Module Version:

Sub RemoveCharacterInRange

      Dim oldValue As String, newValue As String, rng as Range

     

      oldValue = "e"

      newValue = "" 'Because we want to remove

      Set rng = Range("B2:E11")

     

      'Replace action takes in rng range

      rng.Cells.Replace What:= oldValue, Replacement:= newValue, _

            LookAt:=xlPart, SearchOrder:=xlByRows, _

            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

Immediate Window version (no variables):

Range("B2:E11").Cells.Replace What:="e", Replacement:="", _

            LookAt:=xlPart, SearchOrder:=xlByRows, _

            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 

Евгений

Пользователь

Сообщений: 11
Регистрация: 09.09.2019

Добрый день.

Нужно написать макрос, который удаляет определенные символы (напримео XX) в начале каждой ячейки диапазона.
Диапазон можно перебирать циклом for each и получать строки.
Но как удалить символы только в начале строки, а не в середине? Метод Replace судя по всему не подойдет, т.к. он просто заменит все символы, где бы они ни находились.

Например:
Строка XXabc должна превратиться в abc
Строка abXXc не должна измениться

В какую сторону можно копать?
Спасибо.

 

Ham13

Пользователь

Сообщений: 88
Регистрация: 02.08.2016

Выносишь в доп столбец (или в массив если макрос) первые два символа, там где в доп столбце символы равны ХХ, меняешь значение в основном столбце
ЛЕВСИМВ
ДЛСТР
ПРАВСИМВ

 

artemkau88

Пользователь

Сообщений: 552
Регистрация: 09.10.2019

#3

05.11.2022 20:30:49

Евгений

, добрый вечер!
Вариант пользовательской функцией:

Код
Function RegExReplace(what, pattern, replace)
    With CreateObject("VBScript.Regexp")
        .Global = False: .MultiLine = True: .pattern = pattern
        If .test(what) Then RegExReplace = .replace(what, "")
    End With
End Function

Прикрепленные файлы

  • replace.xlsb (13.76 КБ)

 

Евгений

Пользователь

Сообщений: 11
Регистрация: 09.09.2019

Всем спасибо! Ham13 подсказал нужное направление, я сделал так:
Проверяю с помощью Like  и wildcard *, есть ли нужные символы в начале строки
Убираю всё ненужное функцией Right, кол-во символов, которое нужно оставить считаю с помощью len

   If rangeItem.Value Like (stringToDel & «*») Then
       rangeItem.Value = Right(rangeItem.Value, Len(rangeItem) — Len(stringToDel))
   End If

 

Евгений

Пользователь

Сообщений: 11
Регистрация: 09.09.2019

#5

05.11.2022 20:46:26

Вот функция полностью:

Код
Function funcDelSymbols(ByVal stringToDel As String)
Dim rangeItem As Range
For Each rangeItem In Selection
    If rangeItem.Value Like (stringToDel & "*") Then
        rangeItem.Value = Right(rangeItem.Value, Len(rangeItem) - Len(stringToDel))
    End If
Next rangeItem
End Function

Изменено: Евгений05.11.2022 20:47:45

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

#6

06.11.2022 01:32:34

допустим в ячейке А2 находится текст «XX123», тогда в ячейку В2 вводим =DeleteFirstSymbols(A2;»XX»)

Код
Function DeleteFirstSymbols(ByVal Txt As String, ByVal stringToDel As String) As String
    If Txt Like (stringToDel & "*") Then
        Txt = Right(Txt, Len(Txt) - Len(stringToDel))
    End If
    DeleteFirstSymbols = Txt
End Function
 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#7

07.11.2022 10:00:37

artemkau88, очень странно использовать для этого RegExp…
Евгений, New, функция нормальная, но, если строка будет начинаться с символов, которые Like считает служебными, то получите некорректный результат

Данная функция лишена этого недостатка и работает НЕ медленнее

Изменено: Jack Famous07.11.2022 10:02:14

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 
Jack Famous

, почему? Думаю регулярками в разы проще задачи со строками решать, или я ошибаюсь.
Хотя, для этого случая, наверное, это перебор  :D  

Изменено: artemkau8807.11.2022 10:05:56

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

artemkau88, для использования регулярок, нужно, как минимум, знать правило создания шаблона для работы вашей «готовой» функцией. Для подобной задачи, это вообще не нужно, т.к. строковыми и понятнее и быстрее.
Будьте добры, составьте вызов вашей функции для примера «XXabc» — есть подозрение, что вы и сами не сможете это сделать…

Изменено: Jack Famous07.11.2022 10:11:04

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 
Jack Famous

, согласен, не все знают регулярки, и я тоже в их числе (глубоко не заглублялся пока)

Функцию написал,

обновил файл

обновил еще раз(см. вложение)

Изменено: artemkau8807.11.2022 10:31:35

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#11

07.11.2022 10:26:00

Первый вопрос от 90% пользователей: а зачем символы «^|{}»

Вариант, конечно, рабочий, но, как я уже ранее сказал, не вижу смысла усложнять на ровном месте…

А также:

    1. если .Global = False, то зачем .MultiLine = True
    2. почему не упростить жизнь пользователю, добавив якорь начала строки в шаблон на уровне функции?
    3. все недостатки Like, только гораздо хуже

Изменено: Jack Famous07.11.2022 10:29:09

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 
Jack Famous

, абсолютно согласен, обновил сообщение выше.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#13

07.11.2022 10:32:48

Код
Function DelAtStart$(Txt$, Out$)
  DelAtStart = IIf(Txt Like (Out & "*"), Right(Txt, Len(Txt) - Len(Out)), Txt)
End Function

Изменено: Ігор Гончаренко07.11.2022 10:39:23

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Ігор Гончаренко, то же, что и в

#6

, но дольше работать будет

Изменено: Jack Famous07.11.2022 10:35:19

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

))
да, я так и не дождался когда отработает

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

ocet p

Пользователь

Сообщений: 438
Регистрация: 24.03.2018

#16

08.11.2022 00:46:27

такой вариант:

Код
Function cipcip$(ByVal sval$, sdel$)
    Dim asdel&: asdel = AscW(sdel)
    Do While AscW(sval) = asdel
        sval = Right$(sval, Len(sval) - 1)
    Loop
    cipcip = sval
End Function

время перехода при обработке данных (1 миллион строк) в переменной массива:
«всасывание» данных в массив: 0,2 s
удаление символов: 1,4 s
ввод данных в лист: 5,4 s

запуск/вызов (?) функции (на основе одного символа — не подходит для «смешанных символов», таких как: Xa, Xx, и т. д.):

Код
Sub picpic()
    Dim t!: t = Timer
    Const strd$ = "X"
    Dim a, i&
    
    With ActiveSheet
        a = .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value
    End With
        'Debug.Print Round(Timer - t, 3)
        For i = 1 To UBound(a, 1)
            a(i, 1) = cipcip(a(i, 1), strd)
        Next
        'Debug.Print Round(Timer - t, 3)
    With ActiveSheet
        .Range("B1:B" & i - 1).Value = a
    End With
    'Debug.Print Round(Timer - t, 3)
End Sub
 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

ocet p, у меня на 1млн строк («X123») вот так
0,12
0,63
1,68

Изменено: New08.11.2022 01:39:35

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

New, там вообще всё очень неоптимально…
Зачем вычислять номер символа, зачем в цикле получать новую строку, зачем в цикле постоянно вычислять длину…

ocet p, прошу прощения — тесты показывают преимущество вашего подхода для удаления повторяющихся символов.  :oops:
Скоро закончу тестирование и выложу в новом сообщении :idea:

Изменено: Jack Famous08.11.2022 09:51:06

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#19

08.11.2022 09:56:15

Тест №1. 3 функции

Тест №2. 2 Функции. Ньчья

Тест №3. 2 функции. Мимо

Выводы

ocet p, спасибо за науку!  :idea:

Изменено: Jack Famous08.11.2022 11:38:01

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

RAN, спасибо — очень интересно, но надо проверять самому. В любом случае, изучу  :idea:
Добавил 3ий тест. Обогнать не удалось  :)

Изменено: Jack Famous08.11.2022 11:38:47

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

ocet p

Пользователь

Сообщений: 438
Регистрация: 24.03.2018

#22

08.11.2022 15:08:08

Цитата
написал:
ocet p , у меня на 1млн строк («X123») вот так

на моей «машиночке» всё в три-четыре раза длиннее работает, она уже старинная — ваша это «быстрая машина»

Цитата
написал:
спасибо за науку!

рад, что привнес что-то в тему
спасибо за тесты

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#23

09.11.2022 13:08:39

Цитата
Jack Famous: В любом случае, изучу

не со всем согласен: в основном, кажется, что выигрыш сильно завышен. Может, это было актуально когда-то давно, но не сейчас. Каждое утверждение должно сопровождаться кодом — чтобы можно было сразу проверить обоснованность вывода. Часто, только по тексту теста (без исполнения) можно понять, что он некорректный/неполный.

Цитата
Чтение и запись элемента массива всегда медленнее, чем доступ к простой переменной. Следовательно, если Вы хотите использовать один и тот же элемент массива в цикле неоднократно, назначьте временной переменной ссылку на этот элемент, и используйте именно ее. В циклах повышение производительности может достигать 80 процентов

Это не так. Разница в 5%

Цитата
Никогда не используйте For Each на Variant массивах. Обычный For Loop с Integer или Long индексом как минимум в двое быстрее.

А это, как ни странно, правда, но не МИНИМУМ в 2 раза, а ПРИМЕРНО

В том числе, для двумерного диапазона

Я вообще стараюсь использовать For Each только для перебора ключей словаря. Например For Each по большому количеству областей может вызвать ошибку, а счётчик такого никогда не допустит. Думаю, разница в том, что для For Each нужно сначала определить коллекцию, которую он будет перебирать и это не всегда получается…

А также…

В общем, доверяй, но проверяй (и подтверждай)  ;)  :idea:

Изменено: Jack Famous09.11.2022 13:21:24

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 
Jack Famous

, позвольте вопрос: а как же сложность алгоритма по которому выполняется код? Или им можно пренебречь, если знать все эти тонкости (из Вашего сообщения выше) и сверх этого?

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#25

09.11.2022 13:53:24

Цитата
artemkau88: а как же сложность алгоритма по которому выполняется код?

не понял вопроса…
Переформулируйте и/или раскройте, пожалуйста  :)

Изменено: Jack Famous09.11.2022 13:53:49

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

artemkau88

Пользователь

Сообщений: 552
Регистрация: 09.10.2019

#26

09.11.2022 14:06:10

Я имею в виду худшее время выполнения кода в нотации О большое, например:
О(1) — константное
O(n) — линейное
O(log(n)) — логарифмическое
и т.д.
То есть, например, сортировка вставками, или пузырьковая сортировка имеет 2 цикла и её время выполнения будет равна O(n^2), но если использовать приемы из Вашего сообщения Выше, то это значительно ускорит код и время работы будет уже другое? Или нет?
Спасибо!

P.S:

Код
two_cicles: 0,234375
one_cicle: 2,140625

один цикл не всегда лучше, чем 2, смотря что использовать внутри цикла  :)  

Прикрепленные файлы

  • sorting.xlsb (25.9 КБ)

Изменено: artemkau8809.11.2022 14:59:48

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#27

09.11.2022 15:01:31

artemkau88, какого кода, какая нотация — вы о чём??? Темой не ошиблись?  :)

Цитата
artemkau88: если использовать приемы из Вашего сообщения Выше, то это значительно ускорит код и время работы будет уже другое? Или нет?

откуда мне знать, как использование других приёмов повлияет на вашу сортировку? Пробуйте…
А вообще, используйте QuickSort

При тестировании различных методик, всё остальное отметается для чистоты замера.

Вы проезжаете 100 км за 2 часа. Средняя скорость 50 км/ч. Но вы едете и 150 и 20 км/ч — на разных участках.
И вот, один из участков отремонтировали и скорость на нём увеличилась с 20 до 40 км/ч — аж в 2 раза.
Вопрос: как изменится общее время прохождения пути и средняя скорость?
Аналогия понятна?  ;)

Изменено: Jack Famous09.11.2022 15:06:36

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

artemkau88

Пользователь

Сообщений: 552
Регистрация: 09.10.2019

#28

09.11.2022 15:05:43

Да, прошу прощения, перетрудился  я чего-то наверное. :D
Думаю, вопрос можно было не задавать, а просто самому использовать Timer.
Еще раз прошу прощения.

Цитата
Jack Famous написал:
А вообще, используйте QuickSort

понял, спасибо!

Изменено: artemkau8809.11.2022 15:06:21

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#29

09.11.2022 15:07:59

Набор топовых сортеров из универсальных на VBA. Option Base 1 — нужно для работы

artemkau88, пользуйтесь на здоровье  :)
Добавил аналогию выше  :D

Изменено: Jack Famous09.11.2022 15:30:22

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

artemkau88

Пользователь

Сообщений: 552
Регистрация: 09.10.2019

#30

09.11.2022 15:09:21

Цитата
Jack Famous написал:
Аналогия понятна?

да, спасибо!

Цитата
написал:
пользуйтесь на здоровье

Большое спасибо!

удаление символов средствами vba

DreOne

Дата: Четверг, 10.12.2015, 18:14 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Здравствуйте!
Возникла проблема удаления символов.
С 1С выгружаются номера счетов в столбце А такого типа:
0000-001578
0000-001579
0000-000875
0000-000790

Как кодом убрать символы слева до знака «-«, включая этот знак и убрать нули, чтобы остались номера 1578,1579,875,790?
Заранее спасибо.


Саморазвитие — это всё…

 

Ответить

_Boroda_

Дата: Четверг, 10.12.2015, 18:23 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Обязательно кодом?
Выделяете столбец А, жмете Контрл h, в найти «*-» без кавычек (звездочка тире), в заменить на — ничего.
Это всё можно макрорекодером записать


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

DreOne

Дата: Четверг, 10.12.2015, 18:29 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Да, так как это только часть всей задачи, для заполнения в дальнейшем бланка счетов.


Саморазвитие — это всё…

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 18:31 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Еще вариант, не знаю проще или нет — через Данные — Текст по столбцам, разделитель «-» или по ширине

 

Ответить

_Boroda_

Дата: Четверг, 10.12.2015, 18:32 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Sub Макрос1()
    Columns(«A:A»).Replace What:=»*-«, Replacement:=»»
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

DreOne

Дата: Четверг, 10.12.2015, 18:39 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Sub Макрос1()
Columns(«A:A»).Replace What:=»*-«, Replacement:=»»
End Sub

Спасибо огромное, работает, супер)


Саморазвитие — это всё…

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 18:39 |
Сообщение № 7

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Не тестировал

[vba]

Код

Public Function Clean(S As String) As String

Clean = «»
Founded = False

For i = 1 To Len(S)
    If Founded Or (Mid(S, i, 1) <> «0» And Mid(S, i, 1) <> «-«) Then
        Clean = Clean & Mid(S, i, 1)
        Founded = True
    End If
Next i

End Function

[/vba]

 

Ответить

RAN

Дата: Четверг, 10.12.2015, 19:30 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

abtextime, Назвать функцию именем существующего метода — это найти приключения на свою… (ну, вы в курсе)


Быть или не быть, вот в чем загвоздка!

 

Ответить

Kuzmich

Дата: Четверг, 10.12.2015, 19:49 |
Сообщение № 9

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

UDF
[vba]

Код

Function Удаление(cell As Range) As String
  Удаление = Split(cell, «-«)(1)
End Function

[/vba]

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 22:18 |
Сообщение № 10

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

RAN, начал изучать VBA месяц назад, простите великодушно )

 

Ответить

sv2014

Дата: Четверг, 10.12.2015, 22:25 |
Сообщение № 11

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

DreOne, добрый вечер,вариант для файл-примера с функцией yyy в столбце C

[vba]

Код

Function yyy%(t$)
    With CreateObject(«VBScript.RegExp»): .Pattern = «0000-0{2,3}»
       yyy = .Replace(t, «»)
    End With
End Function

[/vba]

Сообщение отредактировал sv2014Четверг, 10.12.2015, 22:29

 

Ответить

sv2014

Дата: Четверг, 10.12.2015, 22:52 |
Сообщение № 12

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

DreOne, добавлю еще функцию zzz в столбец D,преимущество таких функций простота

[vba]

Код

Function zzz%(t$)
    Dim j%
   For j = 1 To Len(t)
     If Mid(t, j, 1) Like «[1-9]» Then zzz = Mid(t, j): Exit Function
   Next
End Function

[/vba]

К сообщению приложен файл:

7357533.xls
(36.5 Kb)

 

Ответить

DreOne

Дата: Пятница, 11.12.2015, 09:38 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Спасибо огромное Вам всем,

добавлю еще функцию zzz в столбец D,преимущество таких функций простота

с этим я вообще не силен, первый ответ проще для моего понимания, но и к этому постараюсь придти в скором времени.


Саморазвитие — это всё…

 

Ответить

Wasilich

Дата: Пятница, 11.12.2015, 12:01 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

А еще так можно
[vba]

Код

Sub WWW()
  Range(«A:A»).Replace «-«, «», xlPart
End Sub

[/vba]

 

Ответить

Skip to content

Удаление символов или текста при помощи регулярных выражений

В этом руководстве показано, как использовать регулярные выражения для удаления части содержимого текстовой ячейки в Excel.

Вы когда-нибудь задумывались, насколько мощным был бы Excel, если бы кто-нибудь мог обогатить его набор инструментов регулярными выражениями? Мы не только подумали, но и поработали над этим :) А теперь вы можете добавить эту замечательную функцию RegEx в свои собственные книги и использовать регулярные выражения, чтобы удалить часть текста, соответствующего шаблону!

Ранее мы рассмотрели, как использовать регулярные выражения для замены текста в Excel. Для этого мы создали специальную функцию Regex Replace. Как оказалось, функция выходит за рамки своего основного предназначения и может не только заменять строки, но и удалять их. Как такое могло быть? С точки зрения Excel, удаление значения – это не что иное, как замена его пустой строкой, в чем функция Regex очень хороша!

  •  Функция VBA RegExp для удаления символов и текста в Excel
  • Удалить все совпадения или конкретное совпадение
  • Регулярное выражение для удаления определенных символов
  • Удаляем группы символов с помощью регулярного выражения
  • Регулярное выражение для удаления нечисловых символов
  • Регулярное выражение для удаления всего после пробела
  • Удаление текста после определенного символа
  • Регулярное выражение для удаления всего до пробела
  • Регулярное выражение для удаления всего перед символом
  • Регулярное выражение для удаления всего, кроме
  • Regex для удаления HTML-тегов в Excel
  • Инструмент удаления символов и текста Ablebits Regex
  • Как удалить текст в скобках с помощью регулярного выражения

Функция VBA RegExp для удаления символов и текста в Excel

Как мы все знаем, регулярные выражения не поддерживаются в Excel по умолчанию. Чтобы включить их, вам необходимо создать свою собственную пользовательскую функцию. Хорошая новость в том, что такая функция уже написана, протестирована и готова к использованию. Все, что вам нужно сделать, это скопировать этот код , вставить код в редактор VBA, а затем сохранить файл как книгу с поддержкой макросов (.xlsm).

Функция имеет следующий синтаксис:

RegExpReplace (текст; шаблон; замена; [instance_num]; [match_case])

Первые три аргумента являются обязательными, два последних — необязательными.

Где:

  • Текст – текстовая строка для поиска.
  • Шаблон – регулярное выражение для поиска.
  • Замена – текст, на который нужно заменить. Чтобы удалить подстроки, соответствующие шаблону, используйте для замены пустую строку («»).
  • Instance_num (необязательно) – экземпляр, который нужно заменить. Если не указан, заменяются все найденные совпадения (по умолчанию).
  • Match_case (необязательно) – логическое значение, указывающее, следует ли учитывать регистр текста или игнорировать его. Для сопоставления с учетом регистра используйте ИСТИНА (по умолчанию); для нечувствительности к регистру – ЛОЖЬ.

Для получения дополнительной информации см. Функцию RegExpReplace .

Как упоминалось выше, чтобы удалить части текста, соответствующие шаблону, вы должны заменить их пустой строкой. Итак, общая формула принимает такую ​​форму для удаления текста:

RegExpReplace(текст, шаблон; «»; [instance_num]; [match_case])

В приведенных ниже примерах показаны различные способы применения этой базовой концепции.

Удалить все совпадения или конкретное совпадение

Функция RegExpReplace предназначена для поиска всех подстрок, соответствующих заданному регулярному выражению. То, какие вхождения следует удалять, определяется четвертым необязательным аргументом с именем instance_num.

По умолчанию это «все совпадения». Если аргумент instance_num опущен, все найденные совпадения удаляются. Чтобы удалить конкретное, укажите его порядковый номер.

Предположим, вы хотите удалить нумерацию в приведенных ниже строках. Все такие числа начинаются со знака решетки (#) и содержат ровно 5 цифр. Итак, мы можем идентифицировать их с помощью этого регулярного выражения:

Шаблон: #d{5}b

Граница слова b указывает, что соответствующая подстрока не может быть частью более длинной строки, например #10000001.

Чтобы удалить все совпадения, аргумент instance_num не определен:

=RegExpReplace(A5; $A$2; «»)

Чтобы исключить только первое вхождение, мы устанавливаем аргумент instance_num равным 1:

=RegExpReplace(A5; $A$2; «»; 1)

Обе эти формулы вы видите на скриншоте выше.

Регулярное выражение для удаления определенных символов

Чтобы удалить определенные символы из строки, просто запишите все эти ненужные символы и разделите их вертикальной чертой | . Она действует в регулярных выражениях как оператор ИЛИ.

Например, чтобы стандартизировать телефонные номера, записанные в различных форматах, сначала мы избавляемся от определенных символов, таких как круглые скобки, дефисы, точки и пробелы.

Шаблон: (|)|-|.|s

Формула будет для нашего примера такая:

=RegExpReplace(A5; “(|)|-|.|s”; “”)

Результатом этой операции является 10-значное число, например «1234567890».

Для удобства вы можете ввести регулярное выражение в отдельную ячейку и ссылаться на неё, используя абсолютную ссылку, например $A$2:

=RegExpReplace(A5; $A$2; «»)

А затем вы можете стандартизировать отображение телефонного номера по своему усмотрению, используя оператор конкатенации (&) и текстовые функции, такие как ПРАВСИМВ, ЛЕВСИМВ и ПСТР.

Например, чтобы записать все номера телефонов в формате (123) 456-7890, формула примет следующий вид:

=»(«&ЛЕВСИМВ(B5; 3)&») «&ПСТР(B5; 4; 3)&»-«&ПРАВСИМВ(B5; 4)

Где B5 – ячейка, в которой записана предыдущая формула RegExpReplace.
Пример вы видите на скриншоте выше.

Удаляем группы символов с помощью регулярного выражения

В одном из наших руководств мы рассмотрели, как удалить нежелательные символы в Excel с помощью встроенных функций. Регулярные выражения значительно упрощают эту работу. Вместо того, чтобы перечислять все символы, которые нужно удалить, просто укажите те, которые хотите оставить :)

Шаблон основан на инвертированных символьных классах – перед списком символов помещается этот значок ^, чтобы искать любой одиночный символ НЕ в скобках. Квантификатор + заставляет рассматривать последовательные символы как одно совпадение, так что замена выполняется для соответствующей подстроки, а не для каждого отдельного символа.

В зависимости от ваших потребностей выберите одно из следующих регулярных выражений.

Чтобы удалить не буквенно-цифровые символы, то есть все символы, кроме букв и цифр:

[^0-9a-zA-Zа-яА-Я]+

Чтобы удалить все символы, кроме буквцифр и пробелов:

[^0-9a-zA-Zа-яА-Я ]+

Чтобы удалить все символы, кроме буквцифр и подчеркивания, вы можете использовать W, обозначающий любой символ, НЕ являющийся буквенно-цифровым символом или подчеркиванием:

W+

Если вы хотите сохранить некоторые другие символы, например знаки препинания, поместите их в квадратные скобки.

Например, чтобы удалить любой символ, кроме буквы, цифры, точки, запятой или пробела, используйте следующее регулярное выражение:

[^0-9a-zA-Zа-яА-Я., ]+

Это успешно удаляет все специальные символы. Но если в тексте встречалось подряд несколько пробелов, то остается лишний пробел.

Чтобы исправить это, вы можете вложить указанную выше функцию в СЖПРОБЕЛЫ, которая заменяет несколько пробелов одним.

=СЖПРОБЕЛЫ(RegExpReplace(A5; $A$2; «»))

Результат вы видите на скриншоте ниже.

Регулярное выражение для удаления нечисловых символов

Чтобы удалить все нечисловые символы из строки, вы можете использовать либо эту длинную формулу, либо одно из очень простых регулярных выражений, перечисленных ниже.

Соответствует любому символу, который НЕ является цифрой:

D+

А вот так можно найти все нечисловые символы с помощью отрицательных классов:

[^0-9]+

или

[^d]+
В результате удалены все символы, кроме цифр:

Совет. Если ваша цель – удалить текст и разнести оставшиеся числа в отдельные ячейки или поместить их всех в одну ячейку, разделенную каким-то разделителем, используйте функцию RegExpExtract, как описано в статье «Как извлекать числа из строки с помощью регулярных выражений».

Регулярное выражение для удаления всего после пробела

Чтобы стереть все, что находится после пробела, используйте символ пробела – обычный или такой s, чтобы найти первый пробел. А затем примените  .*, чтобы найти любые символы после него.

Если у вас есть однострочные строки, которые содержат только нормальные пробелы (значение 32 в 7-битной системе ASCII), на самом деле не имеет значения, какое из следующих регулярных выражений вы используете. Если же в ячейке текст записан с переносами строки, то это имеет значение.

Чтобы удалить все после символа пробела, используйте это регулярное выражение:

Шаблон: .*

=RegExpReplace(A5; “.*”; «»)

Эта формула удалит все, что находится после первого пробела в каждой строке. Чтобы результаты отображались правильно, обязательно включите в формате ячейки перенос текста.

Чтобы удалить все, что находится после пробела (включая другие пробелы, табуляцию, возврат каретки и перенос строки), используйте такое регулярное выражение:

Шаблон: s.*

=RegExpReplace(A5; «s.*»; «»)

Поскольку s соответствует нескольким различным типам пробелов, включая новую строку (n), эта формула удаляет все, что находится после первого пробела в ячейке, независимо от того, сколько в ней строк.

На скриншоте выше вы видите результат работы этих двух шаблонов. В первом случае удалено всё, что находится после пробела, в каждой строке текста в ячейке. Во втором случае удалено всё, начиная с первого пробела и до конца текста.

Удаление текста после определенного символа

Используя методы из предыдущего примера, вы можете удалить текст после любого указанного вами символа, а не только пробела.

Чтобы обрабатывать каждую строку текста отдельно:

Общий шаблон:   символ. *

В однострочных строках это удалит все, что находится после символ. В многострочных строках каждая строка будет обрабатываться отдельно, потому что в версии VBA Regex точка . соответствует любому символу, кроме новой строки.

Чтобы обработать все строки текста как одну строку:

Общий шаблон:    символ (.|n)*

Чтобы удалить что-либо после символа, включая новые строки, к регулярному выражению добавляется n.

Например, чтобы удалить текст после первой запятой в строке, попробуйте следующие регулярные выражения:

,. *

,(.|n)*

На скриншоте ниже вы можете увидеть, чем отличаются результаты.

Удалены все символы либо до конца каждой строки, либо до конца всего текста в ячейке.

Регулярное выражение для удаления всего до пробела

При работе с длинными строками текста иногда может потребоваться сделать их короче, удалив одну и ту же часть информации во всех ячейках. Ниже мы обсудим два таких случая.

Удалите все до последнего пробела

Как и в предыдущем примере, регулярное выражение зависит от вашего понимания термина «пробел».

Это регулярное выражение будет соответствовать чему-либо до последнего пробела в строке (добавляются кавычки, чтобы сделать пробел после звездочки заметным).

Шаблон: «.* «

Чтобы получить все символы перед последним пробелом в тексте (включая пробел, табуляцию, возврат каретки и новую строку), используйте это регулярное выражение.

Шаблон: .*s

Особенно заметна разница на многострочных значениях.

Удалить все перед первым пробелом

Чтобы сопоставить что-либо до первого пробела в строке, вы можете использовать это регулярное выражение:

^[^] * +

С начала строки ^ мы сопоставляем ноль или несколько непробельных символов [^ ]*, за которыми сразу же следует один или несколько пробелов +. Последняя часть добавлена ​​для предотвращения потенциальных пробелов в результатах.

Чтобы удалить текст перед первым пробелом в каждой строке, формула записывается в режиме «все совпадения» по умолчанию (аргумент instance_num опущен):

=RegExpReplace(A5; “^[^ ]* +”; «»)

Чтобы удалить текст перед первым пробелом в первой строке и оставить все остальные строки нетронутыми, аргумент instance_num устанавливается в 1:

=RegExpReplace(A5; “^[^ ]* +”; «»; 1)

Можно пометить шаблон в отдельную ячейку и зафиксировать ее абсолютной ссылкой, как это сделано на скриншоте ниже.

Регулярное выражение для удаления всего перед символом

Самый простой способ удалить весь текст перед определенным символом – использовать такое регулярное выражение:

Общий шаблон : ^[^символ]*символ

В переводе на человеческий язык это означает: «от начала текста, выбрать 0 или более символов, кроме указанного символа, до первого вхождения этого символа».

Например, чтобы удалить весь текст перед первым двоеточием, используйте это регулярное выражение:

^[^:]*:

Чтобы избежать пробелов в начале результатов, добавьте в конец пробел s*. Это удалит все до первого двоеточия и обрежет все пробелы сразу после него:

^[^:]*:s*

=RegExpReplace(A5; “^[^:]*:s* ”; «»)

Регулярное выражение для удаления всего, кроме

Чтобы удалить все символы из строки, кроме тех, которые вы хотите сохранить, используйте классы символов с отрицанием.

Например, чтобы удалить все символы, кроме строчных букв и точек, регулярное выражение выглядит так:

[^a-zа-я.]+

Фактически, здесь можно было бы обойтись без квантификатора +, поскольку наша функция заменяет все найденные совпадения. Квантификатор просто делает это немного быстрее – вместо обработки каждого отдельного символа вы заменяете подстроку.

=RegExpReplace(A5; «[^a-zа-я.]+»; «»)

Regex для удаления HTML-тегов в Excel

Прежде всего, следует отметить, что HTML не является обычным языком, поэтому его синтаксический анализ с использованием регулярных выражений – не самый лучший способ. Тем не менее, регулярные выражения определенно могут помочь удалить теги из ваших ячеек, чтобы сделать ваш набор данных более чистым.

Учитывая, что теги html всегда помещаются в угловые скобки <>, вы можете найти их, используя одно из следующих регулярных выражений.

Отрицательный класс:

Шаблон: <[^>]*>

Здесь мы сопоставляем открывающую угловую скобку, за которой следует ноль или более вхождений любого символа, кроме закрывающей угловой скобки [^>]*, до ближайшей закрывающей угловой скобки.

Ленивый поиск:

<.*?>

Здесь мы сопоставляем все, от первой открывающей скобки до первой закрывающей скобки. Знак вопроса указывает искать как можно меньшее количество символов, пока не будет найдена закрывающая скобка.

Какой бы вариант вы бы ни выбрали, результат будет абсолютно одинаковым.

Например, чтобы удалить все теги html из строки в A5 и оставить текст, формула будет следующей:

=RegExpReplace(A5, «<.*?>», «»)

Это решение идеально подходит для однострочного текста (строки 5–9). Для нескольких строк (строки 10–12) результаты сомнительны — тексты из разных тегов сливаются в один. Это правильно или нет? Боюсь, это нелегко решить — все зависит от вашего понимания желаемого результата. Например, в B11 ожидается результат «A1»; в то время как в B10 вы можете захотеть, чтобы «значение1» и «значение2» ​​были разделены пробелом.

Чтобы удалить теги html и разделить оставшийся текст пробелами, вы можете поступить следующим образом:

  1. Заменить теги пробелами » «, а не пустыми строками:

=RegExpReplace(A5, «<.*?>», » «)

  1. Сократить несколько пробелов до одного символа пробела:

=RegExpReplace(RegExpReplace(A10; «<[^>]*>»; » «); » +»; » «)

  1. Обрезать начальные и конечные пробелы:

=СЖПРОБЕЛЫ(RegExpReplace(RegExpReplace(A5; «<[^>]*>»; » «); » +»; » «))

Результат будет примерно таким:

В результате импортированный текст стал совершенно читаемым.

Инструмент удаления символов и текста Ablebits Regex

Если у вас была возможность использовать Ultimate Suite for Excel , вы, вероятно, уже обнаружили новые инструменты Regex, представленные в недавнем выпуске. Прелесть этих функций Regex на основе .NET заключается в том, что они, во-первых, поддерживают полнофункциональный синтаксис регулярных выражений, свободный от ограничений VBA RegExp, и, во-вторых, не требуют вставки какого-либо кода VBA в ваши книги, поскольку вся интеграция кода выполняется автоматически.

Ваша часть работы — создать регулярное выражение и передать его функции :) Позвольте мне показать вам, как это сделать, на практическом примере.

Как удалить текст в скобках с помощью регулярного выражения

В длинных текстовых строках менее важная информация часто заключена в [скобки] и (круглые скобки). Как удалить эти ненужные подробности, сохранив при этом все остальные данные?

Фактически, мы уже создали подобное регулярное выражение для удаления тегов html , то есть текста в угловых скобках. Очевидно, что те же методы будут работать и для квадратных и круглых скобок.

Шаблон:  ((.*?))|([.*?])

Хитрость заключается в использовании ленивого квантификатора (*?) для поиска кратчайшей возможной подстроки. Первая группа ((.*?)) соответствует содержимому от открывающей круглой скобки до первой закрывающей скобки. Вторая группа ([.*?]) соответствует находящемуся от открывающей квадратной скобки до первой закрывающей скобки. Знак | действует как оператор ИЛИ.

Определив шаблон, давайте «скормим» его нашей функции Regex Remove. Вот каким образом:

  1. На вкладке «Ablebits Data» в группе «Text» щелкните «Regex Tools» .
  2. В появившейся слева панели выберите исходные ячейки с текстом, введите регулярное выражение, выберите параметр «Remove (Удалить и нажмите кнопку «Remove».

Чтобы получить результаты в виде формул, а не значений, установите флажок  Insert as a formula (Вставить как формулу).

Чтобы удалить текст в скобках из строк в A2: A5, мы настраиваем следующие параметры, как на скриншоте ниже:

В результате функция AblebitsRegexRemove вставляется в новый столбец рядом с вашими исходными данными.

Функцию также можно ввести непосредственно в ячейку через стандартное диалоговое окно «Вставить функцию», где она отнесена к категории AblebitsUDFs .

Поскольку AblebitsRegexRemove предназначена для удаления текста, ей требуются только два аргумента — исходная строка и регулярное выражение. Оба параметра могут быть определены непосредственно в формуле или предоставлены в виде ссылок на ячейки. При необходимости эту настраиваемую функцию можно использовать вместе с любыми стандартными функциями Excel.

Например, чтобы обрезать лишние пробелы в результирующих строках, вы можете использовать функцию СЖПРОБЕЛЫ :

=СЖПРОБЕЛЫ(RegExpReplace(A5; $A$2; «»))

Вот как удалить текст в Excel с помощью регулярных выражений. Почти так же просто, как купить подписчиков в инстаграм. :)  Благодарю вас за чтение!

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…

Понравилась статья? Поделить с друзьями:
  • Vba удаление таблицы word
  • Vba убрать все пробелы в ячейке excel
  • Vba только для чтения word на
  • Vba таблицы excel примеры
  • Vba строка состояния excel