Страница: 1 |
|
Вопрос: Поиск ячейки и замена значения в строке листа
|
Добавлено: 23.02.06 09:56
|
|
Автор вопроса: khall
|
Помогите, пожалуйста, с задачкой.
Как найти ячейку со значением, например, город, и очистить эту ячейку, а также зависимые с ней ячейки, расположенные на той же строке, что и найденная ячейка в диапазоне G8:G43 и E8:E43?
Этот код очищает все найденные ячейки со значением город, но не очищает те ячейки, которые находятся в той строке, что и ячейка со значением город.
Sub Поиск()
Dim c As Range
For Each c In [I8:I43]
If c.Value Like "город" Then
c.Value = ""
End If
Next
End Sub
Дополнительно
Может быть так или есть код покрасивее? При этом остается проблема: если курсор не находится в ячейке диапазона I8:J20, появляется сообщение об ошибке. Ошибка появляется и тогда, когда в ячейках больше нет данных в диапазоне I8:J20. Как это все исправить?
Public Sub Поиск2()
Dim rng As Range
Set rng = Range("I8:J20").Find(What:="город", After:=ActiveCell, LookIn:=xlValues, _
MatchCase:=True)
Range("I8:J20").FindNext(After:=ActiveCell).Activate
If Not (rng Is Nothing) Then
Cells(ActiveCell.Row, ActiveCell.Column - 1).Select
ActiveCell = ""
Cells(ActiveCell.Row, ActiveCell.Column - 1).Select
ActiveCell = ""
Cells(ActiveCell.Row, ActiveCell.Column + 4).Select
ActiveCell = ""
Else
MsgBox "Не найдено значение"
End If
End Sub
Ответить
|
Номер ответа: 4 Автор ответа:
khall
![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif)
Вопросов: 2 Ответов: 6
|
Профиль | | #4
|
Добавлено: 23.02.06 17:24
|
Работает неплохо. Я немного изменил код, а именно убрал часть кода с диапазоном поиска I8:I43 (поиск именно в этом диапазоне). Но мне нужно, чтобы найденная запись удалялась не во всей строке Row, а только в столбцах рядом. Т.е. поиск происходит в диапазоне I8:I43 и при нахождении в нем значения "ГОРОД", это значение удаляется не только в найденых ячейках диапазона I8:I43, но и значения в диапазонах E8:E43 и G8:G43, которые связаны со значением "город", т.е. соответственно это будет в столбце G значение "телефон", а в столбце E сумма в грн.
Я бы приложил свой пример в Excel'e, но не пойму как это на этом форуме делается?
E G I
8 4,20 грн. Телефон город
9 3,00 грн. Канцтовары копии
10 0,75 грн. Канцтовары копии
11 4,20 грн. Канцтовары почта
12 3,00 грн. Транспорт талоны
13 5,85 грн. Телефон город
14 22,04 грн. Канцтовары почта
15 5,85 грн. Канцтовары копии
16 4,35 грн. Канцтовары почта
17 2,00 грн. Транспорт талоны
18 2,00 грн. Транспорт талоны
19 6,00 грн. Транспорт метро
20 6,00 грн. Телефон город
Это твой уменьшенный код.
  im c As Range
For Each c In [I8:I43]
If UCase(c.Value) = "ГОРОД" Then Rows(c.Row).ClearContents
Next
Ответить
|
Номер ответа: 5 Автор ответа:
khall
![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif) ![](images/starGray.gif)
Вопросов: 2 Ответов: 6
|
Профиль | | #5
|
Добавлено: 23.02.06 17:26
|
E G I
8 4,20 грн. Телефон город
9 3,00 грн. Канцтовары копии
10 0,75 грн. Канцтовары копии
11 4,20 грн. Канцтовары почта
12 3,00 грн. Транспорт талоны
13 5,85 грн. Телефон город
14 22,04 грн. Канцтовары почта
15 5,85 грн. Канцтовары копии
16 4,35 грн. Канцтовары почта
17 2,00 грн. Транспорт талоны
18 2,00 грн. Транспорт талоны
19 6,00 грн. Транспорт метро
20 6,00 грн. Телефон город
Ответить
|
Страница: 1 |
Поиск по форуму