Удаление / фильтрация содержимого ячейки в Microsoft Excel 2013

Я ищу лучший способ очистить содержимое ячейки одной конкретной ячейки в моей таблице. Поскольку он существует сейчас, в столбце D перечислены город, штат и средняя школа в одной и той же ячейке (снимок экрана 1). Мне нужно разделить эти значения на 3 уникальных столбца / ячейки, как показано на скриншоте # 2. Как бы я это сделал?

** Примечание. Пример ниже – это просто размер выборки. У меня есть тысячи ячеек, чтобы выполнить это.

Существующий формат ячейки:

введите описание изображения здесь

Новый формат (надеюсь):

введите описание изображения здесь

Используйте разделители разделов по запятой «разделенные запятыми» в текстовых столбцах, а затем снова используйте «фиксированную ширину», чтобы разделить состояние от имени школы (при условии, что состояние всегда равно 2 символам). При необходимости очистите места с помощью TRIM.

Привет, что-то вроде этого должно просматривать все ваши ячейки в строке D и возвращать значения, которые вы ищете в следующих трех столбцах; может потребоваться небольшая корректировка

For each cell in Range("D2:D & Range("D2".End(xlDown).Row)) cell.offset(columnOffset:=1) = left(cell,instr(String1:=cell, String2:= ",")) cell.offset(columnOffset:=2) = Mid(cell,instr(String1:=cell, String2:= ",")+1,2) cell.offset(columnOffset:=3) = right(cell,len(cell)-instr(String1:=cell, String2:= ",")+3) Next

Я пробовал код Джейка Дадди, он содержит довольно некоторые ошибки, я не знаю, работает ли он. В то же время вы можете попробовать под кодом.

 Dim LastRow As Long Dim State_L As String Dim City_L As String Dim HS_L As String LastRow = Range("D" & Rows.Count).End(xlUp).Row For i = 2 To LastRow City_L = Left(Range("D" & i), InStr(1, Range("D" & i), ",") - 1) ' Getting up to comma State_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 1, 2) 'Getting after comma for 2 characters HS_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 3, Len(Range("D" & i)) - InStr(1, Range("D" & i), ",")) 'Getting after comma+2 characters upto the end Range("E" & i).Value = City_L Range("F" & i).Value = State_L Range("G" & i).Value = HS_L Next 

Выберите ячейки, которые вы хотите обработать, и запустите этот небольшой макрос:

 Sub ParseData() Dim r As Range, L As Long, L1 As Long, L2 As Long For Each r In Selection t = r.Text L = Len(t) L1 = InStr(1, t, ",") For i = 1 To L If r.Characters(i, 1).Font.Italic = True Then L2 = i Exit For End If Next i r.Offset(0, 1).Value = Mid(t, 1, L1 - 1) r.Offset(0, 2).Value = Mid(t, L1 + 1, L2 - L1 - 1) r.Offset(0, 3) = Mid(t, L2) r.Offset(0, 3).Font.Italic = True Next r End Sub 

Например:

введите описание изображения здесь

  • Фильтрация Вытягивание из листа списка
  • Как создать функцию Excel VBA, которая работает при повторном открытии документа?
  • Excel: подвыборные наборы символов
  • INDEX / MATCH MAX суммы / разницы
  • Excel VBA - поиск и заполнение значений
  • Внедрение формулы массива Excel в c #
  • как запрограммировать excell, чтобы изменить значение ячейки, если другая ячейка имеет значение?
  • Автоматическое отображение конечных нулей в Excel 2010
  • Уникальные значения из столбца, разделенного запятыми, в Excel
  • contenate rows на основе повторяющегося столбца в excel
  • Использование Excel VBA: удаление пустых страниц в документе Word, если происходит событие
  • Давайте будем гением компьютера.