Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление части текста из ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление части текста из ячейки (Макросы/Sub)
Удаление части текста из ячейки
moebus Дата: Вторник, 03.11.2020, 05:36 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Здравствуйте.
Есть необходимость в чистке файла эксель от повторяющихся значений. К примеру есть таблица с большим количеством данных типа (Значение1;15 | Значение2;14 | Значение3;12).
Можно ли сделать так чтобы в ячейках удалялось (Значение1; Значение2; Значение3) и далее по списку, а оставались только 15, 14, 12?

Наиболее близкое решение что я нашел, это тема - http://www.excelworld.ru/forum/10-36631-1 но там удаляется полностью вся ячейка, а мне нужно чтобы ячейка оставалась и удалялось только ненужная информация из ячейки.


Сообщение отредактировал moebus - Вторник, 03.11.2020, 05:38
 
Ответить
СообщениеЗдравствуйте.
Есть необходимость в чистке файла эксель от повторяющихся значений. К примеру есть таблица с большим количеством данных типа (Значение1;15 | Значение2;14 | Значение3;12).
Можно ли сделать так чтобы в ячейках удалялось (Значение1; Значение2; Значение3) и далее по списку, а оставались только 15, 14, 12?

Наиболее близкое решение что я нашел, это тема - http://www.excelworld.ru/forum/10-36631-1 но там удаляется полностью вся ячейка, а мне нужно чтобы ячейка оставалась и удалялось только ненужная информация из ячейки.

Автор - moebus
Дата добавления - 03.11.2020 в 05:36
Pelena Дата: Вторник, 03.11.2020, 06:24 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
(Значение1;15 | Значение2;14 | Значение3;12)
это всё в одной ячейке?
Можно попробовать через Найти/Заменить: Найти _|*; (пробел - верт.черта - звёздочка - точка с запятой)-- Заменить на ,_ (запятая - пробел) -- Заменить все, и потом ещё Найти (*; -- Заменить на (
Если не угадала, прикладывайте файл с примером


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
(Значение1;15 | Значение2;14 | Значение3;12)
это всё в одной ячейке?
Можно попробовать через Найти/Заменить: Найти _|*; (пробел - верт.черта - звёздочка - точка с запятой)-- Заменить на ,_ (запятая - пробел) -- Заменить все, и потом ещё Найти (*; -- Заменить на (
Если не угадала, прикладывайте файл с примером

Автор - Pelena
Дата добавления - 03.11.2020 в 06:24
Kuzmich Дата: Вторник, 03.11.2020, 20:09 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
оставались только 15, 14, 12

UDF
[vba]
Код
Function iReplace(cell$)
With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "Значение\d+;"
     iReplace = Replace(.Replace(cell, ""), "|", ",")
End With
End Function
[/vba]
 
Ответить
Сообщение
Цитата
оставались только 15, 14, 12

UDF
[vba]
Код
Function iReplace(cell$)
With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "Значение\d+;"
     iReplace = Replace(.Replace(cell, ""), "|", ",")
End With
End Function
[/vba]

Автор - Kuzmich
Дата добавления - 03.11.2020 в 20:09
moebus Дата: Вторник, 10.11.2020, 06:28 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Можно попробовать через Найти/Заменить: Найти _|*; (пробел - верт.черта - звёздочка - точка с запятой)-- Заменить на ,_ (запятая - пробел) -- Заменить все, и потом ещё Найти (*; -- Заменить на (


Не понял до конца зачем пробелы и звездочки... Понял что в поиске/замене есть возможность указать не одно значение а несколько, я прав? если да то пожалуй можно как-то выкрутится. Файл для примера https://yadi.sk/i/ohZNyyJrhxAhnw
Там далее, если потянуть вправо есть характеристики, из них нужно поудалять всякие (EV000154;EV007990;EV008336;EV006404;EV006531;EV003188) а сами значения оставить.
 
Ответить
Сообщение
Можно попробовать через Найти/Заменить: Найти _|*; (пробел - верт.черта - звёздочка - точка с запятой)-- Заменить на ,_ (запятая - пробел) -- Заменить все, и потом ещё Найти (*; -- Заменить на (


Не понял до конца зачем пробелы и звездочки... Понял что в поиске/замене есть возможность указать не одно значение а несколько, я прав? если да то пожалуй можно как-то выкрутится. Файл для примера https://yadi.sk/i/ohZNyyJrhxAhnw
Там далее, если потянуть вправо есть характеристики, из них нужно поудалять всякие (EV000154;EV007990;EV008336;EV006404;EV006531;EV003188) а сами значения оставить.

Автор - moebus
Дата добавления - 10.11.2020 в 06:28
moebus Дата: Вторник, 10.11.2020, 06:29 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
UDF
Function iReplace(cell$)
With CreateObject("VBScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "Значение\d+;"
    iReplace = Replace(.Replace(cell, ""), "|", ",")
End With
End Function


За решение спасибо, буду пытаться постичь как это реализовать))
 
Ответить
Сообщение
UDF
Function iReplace(cell$)
With CreateObject("VBScript.RegExp")
    .Global = True
    .IgnoreCase = True
    .Pattern = "Значение\d+;"
    iReplace = Replace(.Replace(cell, ""), "|", ",")
End With
End Function


За решение спасибо, буду пытаться постичь как это реализовать))

Автор - moebus
Дата добавления - 10.11.2020 в 06:29
mgt Дата: Вторник, 10.11.2020, 10:41 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 0% ±

Excel 2010
Если то, что нужно удалить, отделяется точкой с запятой, то можно так:

[vba]
Код
Private Sub trash_del() 'удаляем все до первой точки с запятой в выделенном фрагменте
Dim c As Range
For Each c In Selection.Cells
    If InStr(1, c.Value, ";") > 0 Then
        c.Value = Right(c.Value, Len(c.Value) - InStr(1, c.Value, ";"))
    End If
Next
End Sub
[/vba]
 
Ответить
СообщениеЕсли то, что нужно удалить, отделяется точкой с запятой, то можно так:

[vba]
Код
Private Sub trash_del() 'удаляем все до первой точки с запятой в выделенном фрагменте
Dim c As Range
For Each c In Selection.Cells
    If InStr(1, c.Value, ";") > 0 Then
        c.Value = Right(c.Value, Len(c.Value) - InStr(1, c.Value, ";"))
    End If
Next
End Sub
[/vba]

Автор - mgt
Дата добавления - 10.11.2020 в 10:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление части текста из ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!