Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2009, 10:27   #1
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
Вопрос Операторы условного перехода? Плодить или не плодить?

Доброго времени суток! Очень хочется, чтобы на работе компьютер помогал автоматизировать некоторые моменты. Себе поставил следующую задачу. В районе есть территории, принадлежащие разным Жилкомсервисам (ЖКС). Допустим, есть две ячейки в каждой строке:
в первую пишется название улицы, во вторую - номер дома. Хочу сделать макрос, чтобы он проверял содержимое этих ячеек на условия:
если название улицы такое-то и при этом номер дома чётный (ну, или нечётный), номер дома больше (ну, или меньше), то в следующую, ТРЕТЬЮ ячейку справа автоматом записывается определённое выражение (например, ЖКС-1 или ЖКС-2).

Я понимаю так, что каждый раз должны выполняться проверки с помощью функции If? Например, если это "Проспект Стачек", если номер дома чётный и он больше 92, то это "ЖКС-1". Если условия не выполняются, проверяем следующее условие - если это "Улица Маршала Говорова", номер дома чётный, то... Ну и так далее. В общем, у меня будет огромное количество условий. И мне что, плодить кругом море проверок значений с помощью "If"?


Направьте меня на путь истинный. Серьёзно макросописанием не занимался. В голове остались лишь остатки знаний по Basic, который когда-то учили в колледже.

Может, убрать кучу проверок с помощью "If" и какой-то массив создать, содержащий перечень названий улиц, ВСЕХ номеров домов на этих улицах и т.д.?
Павел-812 вне форума Ответить с цитированием
Старый 10.02.2009, 10:43   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,864
По умолчанию

Код:
Может, убрать кучу проверок с помощью "If" и какой-то массив создать, содержащий перечень названий улиц, ВСЕХ номеров домов на этих улицах и т.д.?
Да, проверка должна быть одна и универсальная для всех случаем. А эти случаи должны быть описаны отдельно (способ описания можете выбрать на своё усмотрение).
Arigato на форуме Ответить с цитированием
Старый 10.02.2009, 11:12   #3
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Я понял вас так. Мне надо создать некий массив данных:

"Стачек", 17, "ЖКС-1"
"Стачек", 18, "ЖКС-1"
"Стачек", 19, "ЖКС-2"
"Стачек", 20, "ЖКС-2"
"Говорова", 12, "ЖКС-1"
"Говорова", 13, "ЖКС-1"
"Говорова", 14, "ЖКС-2"
"Говорова", 15, "ЖКС-2"

А потом как-то его использовать при проверке значений стобцов: "Улица" и "Номер дома"? Если да, то как?
Павел-812 вне форума Ответить с цитированием
Старый 10.02.2009, 11:17   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,864
По умолчанию

Можете использовать БД, но, мне кажется, Вы это не потяните.
Тогда у нас будет простой текстовый файл. Его нужно читать построчно, каждую строку разбивать на составляющие компоненты (например, разделитель ",") и проводить сравнение. Так, пока не найдём нужную строку в файле.
Arigato на форуме Ответить с цитированием
Старый 10.02.2009, 11:27   #5
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Можете использовать БД, но, мне кажется, Вы это не потяните.
Тогда у нас будет простой текстовый файл. Его нужно читать построчно, каждую строку разбивать на составляющие компоненты (например, разделитель ",") и проводить сравнение. Так, пока не найдём нужную строку в файле.
По идее, раньше уже немного имел дела со связанными таблицами в базе данных Access. Тогда бы мы создали таблицу со списком улиц. Каждой улице сопоставили бы несколько домов, относящихся к одному и тому же ЖКС (жилкомсервису).

Но подключать БД к делу не хочу, так как на своей работе я занимаюсь набивкой данных в Excel, так привычнее. Excel нравится много чем, а на данный момент - автофильтром и условным форматированием. Кстати, по умолчанию в Excel 2003 почему-то только ТРИ условия для условного форматирования. В 2007 версии офиса видел больше возможностей. Но это так, отвлекаемся от темы. =)
Я согласен для Excel от руки набрать все возможные комбинации типа:
"Стачек", 17, "ЖКС-1". Только как эти данные заставить работать? Чтобы при вводе "Стачек" и номера дома "18" автоматически в СОСЕДНЮЮ ЯЧЕЙКУ справа записывались данные из описанных мною комбинаций?
Павел-812 вне форума Ответить с цитированием
Старый 10.02.2009, 12:34   #6
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Павел-812 Посмотреть сообщение
По идее, раньше уже немного имел дела со связанными таблицами в базе данных Access. Тогда бы мы создали таблицу со списком улиц. Каждой улице сопоставили бы несколько домов, относящихся к одному и тому же ЖКС (жилкомсервису).

Но подключать БД к делу не хочу, так как на своей работе я занимаюсь набивкой данных в Excel, так привычнее. Excel нравится много чем, а на данный момент - автофильтром и условным форматированием. Кстати, по умолчанию в Excel 2003 почему-то только ТРИ условия для условного форматирования. В 2007 версии офиса видел больше возможностей. Но это так, отвлекаемся от темы. =)
Я согласен для Excel от руки набрать все возможные комбинации типа:
"Стачек", 17, "ЖКС-1". Только как эти данные заставить работать? Чтобы при вводе "Стачек" и номера дома "18" автоматически в СОСЕДНЮЮ ЯЧЕЙКУ справа записывались данные из описанных мною комбинаций?
Уважаемый Павел!

Как заставить записывать в СОСЕДНУЮ ячейку не большая проблема. Если не ХВАТАЕТ условий ЕСЛИ то можно в какой-то области использовать несколько ячеек.
Другая проблема которая может повредить всю логику.
Если вместо "Стачек" ты введешь "Сташек" или "Стачик" и т.д.
Не лучше ли в этом случае на отдельном листе сделать перечень улиц, и используя списком выбирать улицу. Это облегчит значительно выбор условий.
Другая проблема. Наверняка есть дома пишутся через дробь например
Стачек, 17/2
Как в этом случае определять к какому ЖСК они относятся
Юнлинг вне форума Ответить с цитированием
Старый 10.02.2009, 12:45   #7
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Юнлинг Посмотреть сообщение
Уважаемый Павел!

Как заставить записывать в СОСЕДНУЮ ячейку не большая проблема. Если не ХВАТАЕТ условий ЕСЛИ то можно в какой-то области использовать несколько ячеек.
Другая проблема которая может повредить всю логику.
Если вместо "Стачек" ты введешь "Сташек" или "Стачик" и т.д.
Не лучше ли в этом случае на отдельном листе сделать перечень улиц, и используя списком выбирать улицу. Это облегчит значительно выбор условий.
Другая проблема. Наверняка есть дома пишутся через дробь например
Стачек, 17/2
Как в этом случае определять к какому ЖСК они относятся
- Что касается неправильного ввода названия улицы, то это исключено, так как у меня ведётся таблица, в которой нет пустых строк, поэтому Excel автоматом подставляет "Стачек" уже при вводе первой-второй буквы. Я это дело контролирую и возможность неправильного ввода исключена.

- Улицу из списка выбирать для меня сложнее - надо больше телодвижений делать. Достаточно набрать "Ста" и нажать Tab, чтобы перейти к вводу в соседнюю ячейку.

- "Не хватает условий" - это я говорил про условное форматирование, чтобы ячейка окрашивалась в заданный цвет в зависимости от значения. Но это так, мелочи. В данном случае речь идёт не об условном форматировании, а о создании макроса, который должен проверить две ячейки (улица, номер дома) на соответствие множеству условий (улиц много, номеров домов тоже много, кроме того, есть чётные и нечётные номера домов).

- Насчёт номера дома через дробь, я откажусь, например, от написания "7/2" и буду оставлять только "7". Это допустимо.
Павел-812 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы в Delphi neomaximus Помощь студентам 1 17.12.2008 20:55
Операторы прерывания Иринкаа Общие вопросы Delphi 13 27.11.2007 21:52