удалять данные в ячейке после определенного символа

У меня есть данные в ячейках A1: A1000. Это список имен, за которыми следует небольшая заметка, например:

  • сэм "быстро
  • ник "длинный
  • Том "быстро

Все они имеют " и пробел после имен, а затем записку. То, что я пытаюсь сделать, это удалить все после имени.

Я играл с макросами, чтобы попытаться сделать это, но не мог заставить работать. Любая идея, как я могу это сделать?

Вот отличный трюк без макросов:

Выберите правильный диапазон (или просто щелкните по A чтобы выбрать весь столбец), а затем нажмите Ctrl+F , нажмите « Replace , « Find запись» точно "* и оставьте поле« Replace with пустым. Теперь нажмите« Replace all и« tada ».

Он заменяет все после (и в том числе) цитаты ничем, потому что она использует * в качестве шаблона, который вы оставили в поле замены пустым.

Изменить: как здесь предлагается код VBA для этого:

 Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart 

Легко! Я не знаю, какую версию Excel вы используете, но вкратце вы хотите сделать Convert Text to Columns а затем разделить ячейки с помощью разделителя. Это оставит вас с двумя столбцами, одной из данных, которые вы хотите и один, который вы можете просто удалить.

Вот прохождение в Office 2010:

  1. Выделите столбец A
  2. найти меню Data
  3. найти меню « Convert Text to Columns
  4. Выберите « Delimited и нажмите « next
  5. В поле « Other введите "
  6. нажмите Finish

Готово! Теперь у вас есть все ваши имена в столбце A, и вы можете просто удалить столбец B.

Подводя итог, сделайте «Преобразовать текст в столбцы», а затем разделите ячейки с помощью разделителя " Супер легко и быстро.

несколько вариантов:

замещать

 Range("A1:A1000").Replace """*", vbNullString 

Если вам требуется манипулировать значением дальше, то более подходящим является следующее:

С Regex:

 Dim str As String, strClean As String Dim cell As Range For Each cell In Range("A1:A1000") With CreateObject("vbscript.regexp") .Pattern = "\""(.*)" .Global = True cell = .Replace(cell, vbNullString) End With Next cell 

Без Regex разделим строку:

 Dim strSplit() As String Dim cell As Range For Each cell In Range("A1:A1000") If (cell.Value <> vbNullString) Then cell.Value = Split(cell.Value, """")(0) End If Next cell 

Если вы хотите сохранить исходные данные, вы также можете сделать это с помощью простой формулы Excel в следующем столбце. Предполагая, что ваши данные находятся в столбце A, следующая формула вернет только имя: =LEFT(A1,SEARCH("""",A1)-1)

 Sub Macro1() For Row = 1 To 1000 S = Range("A" & Row).Cells.Value Pos = InStr(S, Chr(34)) If Pos > 0 Then Range("A" & Row).Cells.Value = Left(S, Pos - 1) Next End Sub 

Нажмите ctrl + f , перейдите на replace tab , введите * в поле find what а затем нажмите « replace all . Не нужно ничего помещать в коробке. Здесь вы заменяете все после . ,

Interesting Posts

Эффективная формула Excel для возврата нескольких совпадений из большого количества строк

Excel, как перемещать слово в одной ячейке справа налево?

Excel как интерфейс для доступа – лучший способ запуска запросов

Как открыть объект (макросы) и использовать форму в нем с помощью командной кнопки?

Столбцы суммы Excel

Объедините лист 3 из многих книг в одну новую книгу

Excel VBA: копирование цвета из ячейки. Interior.Color в MSForms.Label.BackColor

Данные реформата из файла CSV

API Excel Javascript – проверка на ячейки слияния

Использование функции поиска в вложенном состоянии, если в excel

Selenium Webdriver – слайдер НЕ работает по значению от excel

Как получить n-ю букву алфавита

Элементы управления ActiveX Excel не работают, «Не удается выйти из режима разработки», «Библиотека объектов недействительна»,

Как импортировать высокоформатные данные из Excel в базу данных?

Вычислить среднее значение корреляции Спирмена

Давайте будем гением компьютера.