Удалить одинаковые строки VBA
Формулировка задачи:
Подскажите, пожалуйста, как написать такой кусок на VBA
Если в один столбец в Экселе расположены показатели разделенные решелкой (вот так)
100
200
300
##
100
200
300
##
##
100
200
300
и если встречается 2 решетки подряд то эту строку надо удалить. Как написать это в коде?
Спасибо...
Если в один столбец в Экселе расположены показатели разделенные решелкой (вот так)
100
200
300
##
100
200
300
##
##
100
200
300
и если встречается 2 решетки подряд то эту строку надо удалить. Как написать это в коде?
Спасибо...
Решение задачи: «Удалить одинаковые строки VBA»
textual
Листинг программы
<font color="blue">Sub</font> NomenSort()
<font color="blue">Const</font> Divizor <font color="blue">As</font> <font color="blue">String</font> = <font color="teal">"###"</font>
Application.ScreenUpdating = False
<font color="blue">Dim</font> Sh <font color="blue">As</font> Worksheet
<font color="blue">Set</font> Sh = ActiveSheet
<font color="blue">For</font> Index& = Sh.UsedRange.Rows.Count <font color="blue">To</font> <font color="darkblue"><b>2</b></font> <font color="blue">Step</font> -<font color="darkblue"><b>1</b></font>
<font color="blue">If</font> Sh.Cells(Index, <font color="darkblue"><b>1</b></font>) = Divizor <font color="blue">And</font> Sh.Cells(Index - <font color="darkblue"><b>1</b></font>&, <font color="darkblue"><b>1</b></font>) = Divizor <font color="blue">Then</font> _
Sh.Rows(Index).Delete
<font color="blue">Next</font>
<font color="blue">For</font> Index& = <font color="darkblue"><b>2</b></font> <font color="blue">To</font> Sh.UsedRange.Rows.Count <font color="blue">Step</font> <font color="darkblue"><b>3</b></font>
Row& = Row& + <font color="darkblue"><b>1</b></font>&
<font color="blue">Name</font>$ = Sh.Cells(Index, <font color="darkblue"><b>1</b></font>)
Sh.Cells(Row, <font color="darkblue"><b>2</b></font>) = <font color="blue">Name</font>
Sh.Cells(Row, <font color="darkblue"><b>3</b></font>) = Sh.Cells(Index + <font color="darkblue"><b>1</b></font>&, <font color="darkblue"><b>1</b></font>)
Sh.Cells(Row, <font color="darkblue"><b>4</b></font>) = Left(<font color="blue">Name</font>, InStr(<font color="blue">Name</font>, <font color="teal">":"</font>) - <font color="darkblue"><b>1</b></font>&)
<font color="blue">Next</font>
<font color="blue">With</font> Sh.Range(Sh.Cells(<font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>2</b></font>), Sh.Cells(Row, <font color="darkblue"><b>4</b></font>))
.Sort [D1]
<font color="blue">For</font> Row& = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> Row
Index = Row * <font color="darkblue"><b>3</b></font> - <font color="darkblue"><b>1</b></font>&
Sh.Cells(Index, <font color="darkblue"><b>1</b></font>) = Sh.Cells(Row, <font color="darkblue"><b>2</b></font>)
Sh.Cells(Index + <font color="darkblue"><b>1</b></font>&, <font color="darkblue"><b>1</b></font>) = Sh.Cells(Row, <font color="darkblue"><b>3</b></font>)
<font color="blue">Next</font>
.Delete
<font color="blue">End</font> <font color="blue">With</font>
Application.ScreenUpdating = True
<font color="blue">End</font> <font color="blue">Sub</font>