#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))
: ifS
равно ` AA, then
Len (S)=5,
LTrim(S)="AA",
Len(LTrim(S))`= 2, так что разница равна 3.3. смотрите professor-excel.com /…