powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл в условии
9 сообщений из 9, страница 1 из 1
Цикл в условии
    #38043118
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
Подскажите пожалуйста.
надо пробежать таблицу в Excel с регионами РФ.
Населенные пункты разбиты по группам. Указано название Региона, название населенного пункта и количество проживающих там человек. Соответственно я пробегаю по этому списку циклом и проверяю на численность населения.
Когда я дохожу до районов мне нужно найти населенный пункт с максимальным количеством жителей. И уже там проверять условия
200 Тверская область Бельский муниципальный район 6355
200 Тверская область Бежецкий муниципальный район 35858
203 Тверская область Городское поселение - город Бежецк 25230
213 Тверская область г. Бежецк 24042
213 Тверская область Борковское сельское поселение 1317
213 Тверская область Васюковское сельское поселение 630

Соответсвенно код будет примерно таким

do while kod =84
If qty=1000 then ....
If qty=2000 then ....
If kod = 200 Then
Do While kod =300
Поиск максимума
Loop
Ввод данных в ячейку с максимальным населением.
End If
loop

Ну и соответственно во вложенном цикле поиск максимума. Можно или нет в VBA использовать вложенные в условия циклы? или можно эту задачу решить линейным способом?
...
Рейтинг: 0 / 0
Цикл в условии
    #38043371
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно в соседний столбец вписать формулу массива , которая посчитает максимум численности для данного района:

Код: plaintext
=МАКС(ЕСЛИ($B$2:$B$8=B2;ЕСЛИ($C$2:$C$8=C2;$D$2:$D$8)))

В макросе остается сравнить два столбца: где совпадает, там и максимум.
Или сравнение сделать в самой формуле (формула массива):

Код: plaintext
=МАКС(ЕСЛИ($B$2:$B$8=B2;ЕСЛИ($C$2:$C$8=C2;$D$2:$D$8)))=D2

Тогда можно автофильтром выделить строки с ИСТИНА - это и будут населенные пункты с максимальным количеством жителей
...
Рейтинг: 0 / 0
Цикл в условии
    #38046440
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский спасибо за вариант. Все таки решил воспользоваться вложенными циклами.
Чтобы в столбцах на листе была только исходная информация.
Хотя мне кажется здесь нужно загонять все данные в массив, и там уже их обрабатывать.
Но пока не умею.

А еще подскажите, пожалуйста, создай на отдельном листе отчет. И там жестко прописываю какие значения в какой ячейке

.Cells(1, 1) = "Область"
.Cells(2, 2) = "Количество"
.Cells(2, 3) = "Население"
Потом если добавляю строку или столбец все приходится менять. Как такие вещи обычно делаются на VBA?
...
Рейтинг: 0 / 0
Цикл в условии
    #38047587
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я обычно создаю в книге с макросом скрытый лист-шаблон. На нем заголовки, форматирование, формулы, при необходимости - элементы управления и их код в модуле листа.
Чтобы создать лист или новую книгу на основании этого шаблона, его нужно сделать видимым, скопировать и снова скрыть.
Для изменения шаблона достаточно сделать его видимым и отредактировать обычными средствами Excel. При этом основной код не меняется или меняется незначительно.
...
Рейтинг: 0 / 0
Цикл в условии
    #38048024
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dsmart,

Такие вещи делаются не циклами, а запросами. Добро пожаловать в каменный век.
...
Рейтинг: 0 / 0
Цикл в условии
    #38049272
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлично, спасибо большое. Попробую сделать так отчет.
Позже отпишусь.
Теперь вернусь к основному вопросу.
Есть структура Страна-> Регион-> Столица и прочее.
Столица может состоять из районов, города тоже. Области также могут состоять из областных районов.
Далее каждому городу присваивается признак в зависимости от его размеров, при этом признак может присваиваться как городу так и входящим в него районам. То же самое с областями.
Могу выложить Excel файл со структурой. Я с помощью if обхожу в цикле все города. И присваиваю признак.Но получается жутко криво.
Можно ли как то такую структуру запихать в массив. Т.е. области наверное должны быть в подчинении у страны, районы области иметь родителя - область. Или как такую иерархическую структутру можно пропарсить?
...
Рейтинг: 0 / 0
Цикл в условии
    #38049458
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы порекомендовал привязать ваш список к классификатору КЛАДР .
После этого хоть по его коду, хоть по ОКАТО вы можете построить иерархию.
Ну и анализировать после этого намного проще...
...
Рейтинг: 0 / 0
Цикл в условии
    #38050813
dsmart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, спасибо.
Хотя надо проверять насколько удастся привязать к этому списку, надо его подробнее смотреть. Сходу даже не получилось импортнуть их базу в текст. Попытаюсь.
Но в целом может быть удастся обойтись без привязки. Примерный файл во вложении. Задача в том чтобы в зависимости от типа населенного пункта и от его размера выставить признак, который также зависит от вложенных в него населенных пунктов.
Можно попытаться считать, что жирным шрифтом выделены районы имеющие подчиненные поселения. Далее если имеется в файле отступ, то также считаем что верхний уровень родительский.
Или это тупиковый путь?
...
Рейтинг: 0 / 0
Цикл в условии
    #38051344
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, не нравится КЛАДР - возьмите классификаторы ОКАТО или ОКТМО.
Один раз пропишете коды из этих классификаторов (изучив сначала структуру кода классификации) - и всё, вы имеете иерархический справочник...
Дело ведь вот в чём - зачем придумывать то, что уже существует и официально используется?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл в условии
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]