-------------------------------------------- 
|  Visible |   Actual formula   |  I need    |
 --------------------------------------------
|    0     |   =500-500         |  500       |
|    0     |   =10000-10000     |  10000     |
|    0     |   =1500-1500       |  1500      |
|    0     |   =750-750         |  750       |
|          |                    |            |
 -------------------------------------------- 

Я могу сделать выше разделение, используя Text To Column из вкладки Data в MS Office Excel 2007. Но у меня есть много столбцов, которые не могут выделить и применить текст к столбцу одновременно. Возможно ли это любым другим простым способом?

1 ответ1

0

Итак, вы хотите применить этот метод к нескольким столбцам одновременно, верно?
Я не понимаю, как это можно сделать без VBA, поэтому вот мое решение:

Sub text2columns()

separator = "-"
FirstCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlNext).Column
LastCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

For i = LastCol To FirstCol Step -1

    Set test = ActiveSheet.Columns(i).Find(separator, , xlFormulas, xlPart)

    If Not test Is Nothing Then
        Set FirstCell = ActiveSheet.Columns(i).Find("*", , , , , xlNext)
        Set LastCell = ActiveSheet.Columns(i).Find("*", , , , , xlPrevious)

        Columns(i + 1).Insert Shift:=xlToRight
        Application.DisplayAlerts = False
        Range(FirstCell, LastCell).TextToColumns Destination:=FirstCell, _
            DataType:=xlDelimited, Other:=True, OtherChar:=separator
        Application.DisplayAlerts = True
    End If

Next
End Sub

Краткая информация

  1. Итерация в обратном направлении через каждый столбец
  2. Проверить, есть ли строка разделителя - присутствует в текущем столбце
  3. Если да, вставьте новый столбец прямо рядом с ним
  4. И применить метод text-to-column к текущему столбцу

Этот макрос не удастся, если у вас есть более одного разделителя в любой ячейке

До

После

Образец рабочего листа

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .