Код VBA для перемещения ячеек, если они содержат определенный отступ

#excel #vba #indentation #data-cleaning

#excel #vba #отступ #очистка данных

Вопрос:

Я хочу написать код на VBA для сортировки моих данных по смежным столбцам на основе их уровня отступа. Мне удалось написать код, который работает должным образом на основе количества пробелов, начинающихся в ячейке, однако, похоже, я не могу найти способ переместить их на основе отступа. Вот код, который я написал на данный момент:

 Sub Movecellindent()
Dim row As Long

For row = 3 To 3000
    'cells that begin with 15 spaces are moved to column D
    If Range("A" amp; row).Value Like "               *" Then
        Range("D" amp; row).Value = Range("A" amp; row).Value
        Range("A" amp; row).Value = ""
    End If
Next
For row = 3 To 3000
    'cells beginning with 12 spaces are moved to column C
    If Range("A" amp; row).Value Like "            *" Then
        Range("C" amp; row).Value = Range("A" amp; row).Value
        Range("A" amp; row).Value = ""
    End If
Next
For row = 3 To 3000
    'cells beginning with 10 spaces are moved to column B
    If Range("A" amp; row).Value Like "          *" Then
        Range("B" amp; row).Value = Range("A" amp; row).Value
        Range("A" amp; row).Value = ""
    End If
Next
  

Вместо кода, написанного выше, я хочу, чтобы код выполнял то же действие, но с отступами 3, 2 и 1 соответственно.

Спасибо!

Комментарии:

1. Используйте IndentLevel свойство, если они имеют истинные отступы.

2. Чтобы подсчитать количество пробелов перед строкой, вы можете вычислить длину, которая вычитается с помощью LTrim() функции worksheet: Len(S) - Len(LTrim(S)) : if S равно ` AA , then Len (S) =5, LTrim(S) ="AA", Len(LTrim(S))`= 2, так что разница равна 3.

3. смотрите professor-excel.com /…