Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск и удаление - Мир MS Excel

  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_, DrMini  
Поиск и удаление
student-ua Дата: Вторник, 06.05.2014, 11:17 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Нужно реализовать на VBA поиск значений и очистку данных в найденой строке но в другом столбце.
К сообщению приложен файл: ____VBA.xls (22.5 Kb)
 
Ответить
СообщениеНужно реализовать на VBA поиск значений и очистку данных в найденой строке но в другом столбце.

Автор - student-ua
Дата добавления - 06.05.2014 в 11:17
DJ_Marker_MC Дата: Вторник, 06.05.2014, 11:35 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Держи студент))) учись хорошо!

[vba]
Код
Sub ttt()
For Each cell In Range("J2:J11")
     If cell.Value = "7777777" Or cell.Value = "(1111111" Or cell.Value = "2223333" Or cell.Value = "4444444" Or cell.Value = "5556666" Then
         cell.Offset(, -4).ClearContents
         cell.Offset(, -2).ClearContents
     End If
Next
End Sub
[/vba]
 
Ответить
СообщениеДержи студент))) учись хорошо!

[vba]
Код
Sub ttt()
For Each cell In Range("J2:J11")
     If cell.Value = "7777777" Or cell.Value = "(1111111" Or cell.Value = "2223333" Or cell.Value = "4444444" Or cell.Value = "5556666" Then
         cell.Offset(, -4).ClearContents
         cell.Offset(, -2).ClearContents
     End If
Next
End Sub
[/vba]

Автор - DJ_Marker_MC
Дата добавления - 06.05.2014 в 11:35
student-ua Дата: Вторник, 06.05.2014, 11:55 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Скажи DJ_Marker_MC а если в нужно найти аж 50 значений IF столько поймет или нада както через масив?
 
Ответить
СообщениеСкажи DJ_Marker_MC а если в нужно найти аж 50 значений IF столько поймет или нада както через масив?

Автор - student-ua
Дата добавления - 06.05.2014 в 11:55
DJ_Marker_MC Дата: Вторник, 06.05.2014, 12:06 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Файл приложил, код подправил. В столбец X прописываете все значения который ищите.

[vba]
Код
Sub ttt()
For Each cell In Range("J2:J11")
     If Range("X:X").Find(cell.Value) Is Nothing Then
     Else
         cell.Offset(, -4).ClearContents
         cell.Offset(, -2).ClearContents
     End If
Next
End Sub
[/vba]
К сообщению приложен файл: _VBA.xls (35.5 Kb)


Сообщение отредактировал DJ_Marker_MC - Вторник, 06.05.2014, 12:07
 
Ответить
СообщениеФайл приложил, код подправил. В столбец X прописываете все значения который ищите.

[vba]
Код
Sub ttt()
For Each cell In Range("J2:J11")
     If Range("X:X").Find(cell.Value) Is Nothing Then
     Else
         cell.Offset(, -4).ClearContents
         cell.Offset(, -2).ClearContents
     End If
Next
End Sub
[/vba]

Автор - DJ_Marker_MC
Дата добавления - 06.05.2014 в 12:06
student-ua Дата: Вторник, 06.05.2014, 12:12 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

DJ_Marker_MC ты чуть меня не понял за это спасибо канечно но мне на листе не чего нельзя добавлять список нужно задавать в макросе но он большой около 50 значений
 
Ответить
СообщениеDJ_Marker_MC ты чуть меня не понял за это спасибо канечно но мне на листе не чего нельзя добавлять список нужно задавать в макросе но он большой около 50 значений

Автор - student-ua
Дата добавления - 06.05.2014 в 12:12
DJ_Marker_MC Дата: Вторник, 06.05.2014, 12:18 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
student-ua, А как насчет вынести на другой лист и сделать его VeryHidden? и тянуть оттуда данные?
Просто список в 50 значений мне кажется немного глупо впихивать в макрос.
 
Ответить
Сообщениеstudent-ua, А как насчет вынести на другой лист и сделать его VeryHidden? и тянуть оттуда данные?
Просто список в 50 значений мне кажется немного глупо впихивать в макрос.

Автор - DJ_Marker_MC
Дата добавления - 06.05.2014 в 12:18
student-ua Дата: Вторник, 06.05.2014, 12:25 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

нельзя только в макрос
 
Ответить
Сообщениенельзя только в макрос

Автор - student-ua
Дата добавления - 06.05.2014 в 12:25
student-ua Дата: Вторник, 06.05.2014, 12:56 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

DJ_Marker_MC давай брать данные из другого файла (c:\KOD.xls) список из которого нужно брать значения
А1 "KOD"
A2 777777
A3 555555
....
и так далее
так получется уневерсальная прога с пополнением списка.
только когда запускаем макрос файл KOD.xls чтобы не открвывался а из него только брало значения и все.
К сообщению приложен файл: KOD.xls (23.5 Kb) · 4269646.xls (32.0 Kb)


Сообщение отредактировал student-ua - Вторник, 06.05.2014, 12:57
 
Ответить
СообщениеDJ_Marker_MC давай брать данные из другого файла (c:\KOD.xls) список из которого нужно брать значения
А1 "KOD"
A2 777777
A3 555555
....
и так далее
так получется уневерсальная прога с пополнением списка.
только когда запускаем макрос файл KOD.xls чтобы не открвывался а из него только брало значения и все.

Автор - student-ua
Дата добавления - 06.05.2014 в 12:56
Alex_ST Дата: Вторник, 06.05.2014, 13:07 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
student-ua, то, что Вы предлагаете, как раз и есть очень не универсальное решение, т.к. при подтягивании данных из внешних файлов приходится в коде прописывать их полный путь, а при переносе с машину на машину путь может меняться и код работать перестанет если его соответствующим образом не исправить.
А это очень не удобно.
DJ_Marker_MC Вам дело говорит:
вынести на другой лист и сделать его VeryHidden

Тогда не будет никаких проблем с размещением данных. А докопаться до "шибко заныканного" листа сможет только тот, кто о его существовании знает, да и к тому же умеет пользоваться VBE, т.к. только оттуда можно лист сделать видимым.
Та что это как раз и есть
только в макрос



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениеstudent-ua, то, что Вы предлагаете, как раз и есть очень не универсальное решение, т.к. при подтягивании данных из внешних файлов приходится в коде прописывать их полный путь, а при переносе с машину на машину путь может меняться и код работать перестанет если его соответствующим образом не исправить.
А это очень не удобно.
DJ_Marker_MC Вам дело говорит:
вынести на другой лист и сделать его VeryHidden

Тогда не будет никаких проблем с размещением данных. А докопаться до "шибко заныканного" листа сможет только тот, кто о его существовании знает, да и к тому же умеет пользоваться VBE, т.к. только оттуда можно лист сделать видимым.
Та что это как раз и есть
только в макрос

Автор - Alex_ST
Дата добавления - 06.05.2014 в 13:07
DJ_Marker_MC Дата: Вторник, 06.05.2014, 13:11 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Alex_ST, Я так думаю что student-ua, реальный студент и предполагаю что задание от препода.
Я так понимаю тут нужно реально через создание библиотеки/массива (в чем я не силен, не даются они мне никак).
Так что или лист veryhidden или если кто то поможет с массивом
 
Ответить
СообщениеAlex_ST, Я так думаю что student-ua, реальный студент и предполагаю что задание от препода.
Я так понимаю тут нужно реально через создание библиотеки/массива (в чем я не силен, не даются они мне никак).
Так что или лист veryhidden или если кто то поможет с массивом

Автор - DJ_Marker_MC
Дата добавления - 06.05.2014 в 13:11
RAN Дата: Вторник, 06.05.2014, 13:15 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
DJ_Marker_MC, пишем на лист, собираем в строку через запятую (при нужде - с кавычками), копируем, пихаем строку в Array в коде.
Кому не лень, может проделать.
А далее - что с листа массив тянуть, что из кода.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеDJ_Marker_MC, пишем на лист, собираем в строку через запятую (при нужде - с кавычками), копируем, пихаем строку в Array в коде.
Кому не лень, может проделать.
А далее - что с листа массив тянуть, что из кода.

Автор - RAN
Дата добавления - 06.05.2014 в 13:15
Hugo Дата: Вторник, 06.05.2014, 13:17 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Универсальный вариант такой - этот список замен держать в файле с макросом, и лист можно не скрывать.
А макросом обрабатывать активный лист или выделенный диапазон любого другого файла.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеУниверсальный вариант такой - этот список замен держать в файле с макросом, и лист можно не скрывать.
А макросом обрабатывать активный лист или выделенный диапазон любого другого файла.

Автор - Hugo
Дата добавления - 06.05.2014 в 13:17
Alex_ST Дата: Вторник, 06.05.2014, 13:22 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Андрей, я в таких случаях стринги-элементы массива сначала набиваю в ячейках листа, а потом их формулой сцепляю, предварительно обрамив в служебном столбце кавычками и запятыми. Очень просто получается.
Вот только я не уверен, что student-ua умеет сцеплять более 30 значений :)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеАндрей, я в таких случаях стринги-элементы массива сначала набиваю в ячейках листа, а потом их формулой сцепляю, предварительно обрамив в служебном столбце кавычками и запятыми. Очень просто получается.
Вот только я не уверен, что student-ua умеет сцеплять более 30 значений :)

Автор - Alex_ST
Дата добавления - 06.05.2014 в 13:22
RAN Дата: Вторник, 06.05.2014, 13:23 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Леш, а я что предложил? :'(

А не умеет - пусть в готовых решениях поищет.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 06.05.2014, 13:25
 
Ответить
СообщениеЛеш, а я что предложил? :'(

А не умеет - пусть в готовых решениях поищет.

Автор - RAN
Дата добавления - 06.05.2014 в 13:23
Alex_ST Дата: Вторник, 06.05.2014, 13:28 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Ну да, практически то же самое. Извини, не внимательно прочитал.
Но всё равно, интересно, может топик-стартер конкатенацию через амперсанд делать? (Только не поймите меня не правильно, никакой пошлости :) )



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу да, практически то же самое. Извини, не внимательно прочитал.
Но всё равно, интересно, может топик-стартер конкатенацию через амперсанд делать? (Только не поймите меня не правильно, никакой пошлости :) )

Автор - Alex_ST
Дата добавления - 06.05.2014 в 13:28
Hugo Дата: Вторник, 06.05.2014, 13:40 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Ещё варианты:
[vba]
Код
Sub длянедлинных()
     Dim arr
     arr = Split("qwe e4rt ry tu ti yi yi")
End Sub

Sub копипаструлит()
     Dim s$, arr
     s = "qwe"
     s = s & " " & "e4rt"
     s = s & " " & "ry"
     s = s & " " & "tu"
     s = s & " " & "ti"
     s = s & " " & "yi"
     s = s & " " & "yi"
     arr = Split(s)
End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЕщё варианты:
[vba]
Код
Sub длянедлинных()
     Dim arr
     arr = Split("qwe e4rt ry tu ti yi yi")
End Sub

Sub копипаструлит()
     Dim s$, arr
     s = "qwe"
     s = s & " " & "e4rt"
     s = s & " " & "ry"
     s = s & " " & "tu"
     s = s & " " & "ti"
     s = s & " " & "yi"
     s = s & " " & "yi"
     arr = Split(s)
End Sub
[/vba]

Автор - Hugo
Дата добавления - 06.05.2014 в 13:40
DJ_Marker_MC Дата: Вторник, 06.05.2014, 13:44 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Я так понял студенту нужно так:

[vba]
Код
Sub ttt()
arr = Array("7777777", "1111111", "2223333", "4444444","5556666")
a = UBound(arr)

For Each cell In Range("J2:J11")
     For i = 0 To a
         If cell.Value = arr(i) Then
             cell.Offset(, -4).ClearContents
             cell.Offset(, -2).ClearContents
         End If
     Next i
Next
End Sub
[/vba]
 
Ответить
СообщениеЯ так понял студенту нужно так:

[vba]
Код
Sub ttt()
arr = Array("7777777", "1111111", "2223333", "4444444","5556666")
a = UBound(arr)

For Each cell In Range("J2:J11")
     For i = 0 To a
         If cell.Value = arr(i) Then
             cell.Offset(, -4).ClearContents
             cell.Offset(, -2).ClearContents
         End If
     Next i
Next
End Sub
[/vba]

Автор - DJ_Marker_MC
Дата добавления - 06.05.2014 в 13:44
Hugo Дата: Вторник, 06.05.2014, 13:51 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Прописывать вот эти ", " довольно муторно.
А так можно чистым списком из текста в код закопипастить и получить массив.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПрописывать вот эти ", " довольно муторно.
А так можно чистым списком из текста в код закопипастить и получить массив.

Автор - Hugo
Дата добавления - 06.05.2014 в 13:51
Alex_ST Дата: Вторник, 06.05.2014, 13:53 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
только лучше писАть [vba]
Код
For i= lbound(arr) to ubound(arr)
[/vba]тогда наверняка на Option Base 1 не напорешься (никогда не могу запомнить, с чего считается массив, заданный как arr = Array("7777777", "1111111", "2223333", "4444444","5556666") и влияет ли эта декларация на него)

------------------------
К стати, сейчас проверил - не влияет. И так, и так с 0 считает



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 06.05.2014, 14:00
 
Ответить
Сообщениетолько лучше писАть [vba]
Код
For i= lbound(arr) to ubound(arr)
[/vba]тогда наверняка на Option Base 1 не напорешься (никогда не могу запомнить, с чего считается массив, заданный как arr = Array("7777777", "1111111", "2223333", "4444444","5556666") и влияет ли эта декларация на него)

------------------------
К стати, сейчас проверил - не влияет. И так, и так с 0 считает

Автор - Alex_ST
Дата добавления - 06.05.2014 в 13:53
Alex_ST Дата: Вторник, 06.05.2014, 13:56 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Прописывать вот эти ", " довольно муторно.
а никто и не спорит, что через Split проще получается, а через амперсанд на листе - ещё удобнее особенно при больших массивах.
(я так понимаю, что у всех время обеденного бутерброда с приправой из VBA настало? :) )



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Прописывать вот эти ", " довольно муторно.
а никто и не спорит, что через Split проще получается, а через амперсанд на листе - ещё удобнее особенно при больших массивах.
(я так понимаю, что у всех время обеденного бутерброда с приправой из VBA настало? :) )

Автор - Alex_ST
Дата добавления - 06.05.2014 в 13:56
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!