Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Поиск фразы в столбце и создание записи в соседнем столбце

Ответить
Настройки темы
2010 - [решено] Поиск фразы в столбце и создание записи в соседнем столбце

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: blackeangel
Дата: 03-04-2017
Всем добрый день. Есть такая не сложная задача:
Найти столбец содержащий в первой строке слово "маршрут", в нём искать регулярные выражения как 3000,3100,3200,3300,3400,3600,3800,3801,2400 и справа от столбца с "маршрут" создать столбец "пришёл" в котором будем писать если нашлось 3000, то пишем 3000,если нет 3000, но нашлось 3100 то пишем 3100 и тд до последней записи в файле.
Как это все реализовать?Помогите пожалуйста!
Пример как было и как должно быть прилагаю

Отправлено: 16:13, 13-12-2015

 

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


себе представляю это так:

Код: Выделить весь код
sub типа пример ()
задаем переменные
а=3000
b=3100
c=3200
d=3300
...
ищем столбец содержащий в первой строке "Маршрут"
Получаем его номер
дальше запускаем for со 2 до последней строки содержащей запись в столбце с "Маршрут"
запускаем if содержит(входит) а then
в столбец с номером "Маршрут" +1 и строка [i] пишем константу а
else
 if содержит(входит) b then
в столбец с номером "Маршрут" +1 и строка [i] пишем константу b
 else
     if содержит(входит) c then
в столбец с номером "Маршрут" +1 и строка [i] пишем константу c
     else
... 
end if
end sub
но как это реализовать на ЯП не знаю...

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 16:39, 13-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


В выложенном примере «B7» содержит «3050». Откуда оно взялось, если его нет в указанном Вами перечне:
Цитата blackeangel:
3000,3100,3200,3300,3400,3600,3800,3801,2400 »
И вообще непонятно, как понимать эту фразу:
Цитата blackeangel:
искать регулярные выражения как 3000,3100,3200,3300,3400,3600,3800,3801,2400 »
?!

P.S. Выложите реальный образец. Пример, как должно быть, лучше делать на отдельном листе.

Отправлено: 18:07, 13-12-2015 | #3


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
В выложенном примере «B7» содержит «3050». Откуда оно взялось, если его нет в указанном Вами перечне:
Цитата blackeangel:
3000,3100,3200,3300,3400,3600,3800,3801,2400 »
И вообще непонятно, как понимать эту фразу:
Цитата blackeangel:
искать регулярные выражения как 3000,3100,3200,3300,3400,3600,3800,3801,2400 »
?!

P.S. Выложите реальный образец. Пример, как должно быть, лучше делать на отдельном листе.
Так искать надо как содержит,там и буквы есть и скобочки ещё,так что 3050 это как лишний мусор. Я дал кусок да ещё и упрощённый.
Как понимать мою фразу?как константы.Все перечисленные это и есть константы(9 штук), которые искать надо.Во втором своём сообщении я примерно описал как программа должна работать. .

Последний раз редактировалось blackeangel, 13-12-2015 в 20:56.


Отправлено: 18:53, 13-12-2015 | #4


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
В выложенном примере «B7» содержит «3050». Откуда оно взялось, если его нет в указанном Вами перечне:
Цитата blackeangel:
3000,3100,3200,3300,3400,3600,3800,3801,2400 »
И вообще непонятно, как понимать эту фразу:
Цитата blackeangel:
искать регулярные выражения как 3000,3100,3200,3300,3400,3600,3800,3801,2400 »
?!

P.S. Выложите реальный образец. Пример, как должно быть, лучше делать на отдельном листе.
Вот живой рабочий пример,сильно от того что давал ранее не отличается.Было и стало на разных листах, как и просил

Последний раз редактировалось blackeangel, 03-04-2017 в 22:53.


Отправлено: 07:18, 14-12-2015 | #5


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Решение найдено.
Код: Выделить весь код
Sub raspil()
Application.ScreenUpdating = False
i = 2
sWhatFind = "Маршрут"
Cells.Find(What:=sWhatFind, After:=ActiveCell, SearchOrder:=xlByColumns).Activate
ncolumn = ActiveCell.Column
Do While Cells(i, ncolumn).Value <> Empty
If Cells(i, ncolumn).Value Like "*3000*" Then
Cells(i, ncolumn + 1).Value = "3000"
Else
If Cells(i, ncolumn).Value Like "*3100*" Then
Cells(i, ncolumn + 1).Value = "3100"
Else
If Cells(i, ncolumn).Value Like "*3200*" Then
Cells(i, ncolumn + 1).Value = "3200"
Else
If Cells(i, ncolumn).Value Like "*3300*" Then
Cells(i, ncolumn + 1).Value = "3300"
Else
If Cells(i, ncolumn).Value Like "*3400*" Then
Cells(i, ncolumn + 1).Value = "3400"
Else
If Cells(i, ncolumn).Value Like "*3600*" Then
Cells(i, ncolumn + 1).Value = "3600"
Else
If Cells(i, ncolumn).Value Like "*3800*" Then
Cells(i, ncolumn + 1).Value = "3800"
Else
If Cells(i, ncolumn).Value Like "*3801*" Then
Cells(i, ncolumn + 1).Value = "3801"
Else
If Cells(i, ncolumn).Value Like "*2400*" Then
Cells(i, ncolumn + 1).Value = "2400"
End If
End If
End If
End If
End If
End If
End If
End If
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub

Отправлено: 09:29, 15-12-2015 | #6


Модератор


Moderator


Сообщения: 16855
Благодарности: 3252

Профиль | Сайт | Отправить PM | Цитировать


По-моему, с помощью Select Case вышло бы короче и понятнее

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Отправлено: 21:02, 15-12-2015 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Там «Like»'а нету. Если, конечно, в новых версиях не разрешили использовать его в «Is». Update: обходной путь указал коллега okshef ниже.

А сократить, конечно, можно было. Хотя бы использовав не вложенность, а «ElseIf», а для скорости один раз брать значение «Cells(i, ncolumn).Value», а не десяток.

Последний раз редактировалось Iska, 15-12-2015 в 22:55. Причина: Корректировка утверждения


Отправлено: 21:54, 15-12-2015 | #8


Модератор


Moderator


Сообщения: 16855
Благодарности: 3252

Профиль | Сайт | Отправить PM | Цитировать


Как-то так: http://ccm.net/faq/36211-vba-using-t...th-select-case

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:14, 15-12-2015 | #9


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


okshef, «Good» . И ведь видел когда-то эту технику (не в связи с Like). Но не пользуешься — забыл.

Отправлено: 22:52, 15-12-2015 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Поиск фразы в столбце и создание записи в соседнем столбце

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2007 - [решено] Excel получение предыдущей непустой ячейки в столбце eus_deus Microsoft Office (Word, Excel, Outlook и т.д.) 4 06-12-2015 09:17
CMD/BAT - [решено] awk замена текста во втором столбце shmel_sv@vk Скриптовые языки администрирования Windows 9 14-09-2015 14:16
2010 - Подсчет ячеек одного столбца при совпадении слов в другом столбце irvicon Microsoft Office (Word, Excel, Outlook и т.д.) 8 06-02-2013 10:12
Sharepoint - Пробелы в числовом столбце AxeL_FoX Другие серверные продукты 0 02-06-2010 21:31
Интерфейс - Не выводится информация в столбце “Размеры” CompFan Microsoft Windows 2000/XP 1 15-02-2008 01:00




 
Переход