1 (изменено: uranium238, 2013-04-12 17:48:26)

Тема: VBA: Сложная замена значений в ячейке с исключениями

Здравствуйте Уважаемые Форумчане
Прошу помочь разобраться.

Имеется таблица стран с наименованием, кодом, расположением, признаком группировки и столбец ячеек, в каждой из которых находится некоторое перечисление скольких-то стран или наименования объединений.
Необходимо заменить ячейку перечислением кодов стран через запятую. Сложность заключается ещё и в том, что  попадаются исключения из групп, например, группа стран Азии, исключая Японию, Китай.

Подскажите идею. Подходящий алгоритм так и не нашёл. Буду рад любой поддержке.
Файл списка во вложении.
Спасибо.

Post's attachments

zamena.xlsx 20.5 kb, 10 downloads since 2013-04-12 

You don't have the permssions to download the attachments of this post.

2

Re: VBA: Сложная замена значений в ячейке с исключениями

uranium238, не удаётся извлечь файл. Попробуйте выложить его в другом формате архива.

3

Re: VBA: Сложная замена значений в ячейке с исключениями

alexii пишет:

uranium238, не удаётся извлечь файл. Попробуйте выложить его в другом формате архива.

ок. перезалил.

4

Re: VBA: Сложная замена значений в ячейке с исключениями

1. «признаком группировки» — это столбец «Союзы»?
2. Поясните по поводу исключений — что делать нужно? Включить все страны относящиеся к региону, убрав исключения?
3. К какому региону относятся «Остров Буве», «Остров Херд и острова Макдональд» и т.д.?
4. Как работать с «Боливия», если в списке она значится как «Боливия, Многонациональное Государство»?! Аналогично — «Молдова, Республика» и т.п.
5. Как быть с отсутствующим в списке регионом «АРКТИКА»?

5

Re: VBA: Сложная замена значений в ячейке с исключениями

alexii пишет:

1. «признаком группировки» — это столбец «Союзы»?
2. Поясните по поводу исключений — что делать нужно? Включить все страны относящиеся к региону, убрав исключения?
3. К какому региону относятся «Остров Буве», «Остров Херд и острова Макдональд» и т.д.?
4. Как работать с «Боливия», если в списке она значится как «Боливия, Многонациональное Государство»?! Аналогично — «Молдова, Республика» и т.п.
5. Как быть с отсутствующим в списке регионом «АРКТИКА»?

1. Группировать первый лист можно как угодно - это просто база информации.
2. Да, всё верно. Например: есть на 2ом листе ячейка, где написано "АЗИЯ (искл. Армения, Азербайджан, Грузия, Япония, Китай, Киргизия, Казахстан, Таджикистан, Туркмения, Узбекистан)", то надо в соседней ячейке получить все коды стран, которые относятся к Азии как части света, но за исключением кодов стран, что перечислены в скобках.
3. Самому интересно Если страна не относится к какой-либо части света, то её не и не надо включать.
4. Это уже дальнейшая подгонка. На первых порах нужно соответствие столбца "Наименование" первого листа с тем списком стран, что на 2ом.
5. АРКТИКу также можно не принимать в алгоритм.

6

Re: VBA: Сложная замена значений в ячейке с исключениями

1. Группировать первый лист можно как угодно - это просто база информации.

Ответьте на заданный мною вопрос.

4. Это уже дальнейшая подгонка. На первых порах нужно соответствие столбца "Наименование" первого листа с тем списком стран, что на 2ом.

Это не «дальнейшая подгонка». Это страны, присутствующие в Вашем примере. А машине нельзя объяснить, как человеку — «здесь читать, здесь не читать, а здесь рыбу заворачивать». И если у Вас во втором листе написано «Боливия» и «Молдова», а на первом листе «Боливия, Многонациональное Государство» и «Молдова, Республика» — машина никак не сможет сделать вывод, что это одна и та же страна. Определитесь с этим.

5. АРКТИКу также можно не принимать в алгоритм.

Это как? Тупо оставлять то, что не найдено в списке? Думайте.

7

Re: VBA: Сложная замена значений в ячейке с исключениями

1. Признака группировки нет. Если есть необходимость, можно группировать.
2. Таблица на 1ом листе - это справочник и он имеет другое происхождение, из-за этого возникают не соответствия подобно Боливии. В процессе работы я подкорректирую его. Машине лучше указывать приоритет стан, что во 2ом листе, а тех, что нет - вычеркивать.

Есть ещё ячейка B11, где написано "Польша, Румыния, ЕВРОПА (искл. ЕС, Швейцария, Норвегия)..." Тут не косяк. Грамотней было написать: ЕВРОПА (искл. ЕС (кроме Польша, Румыния), Швейцария, Норвегия), - но есть как есть.

8

Re: VBA: Сложная замена значений в ячейке с исключениями

1. Признака группировки нет. Если есть необходимость, можно группировать.

Вы опять отвечаете на свой вопрос, а не на мой. Пробуем ещё раз: Ваши слова из первого поста «признаком группировки» означают столбец «Союзы»?

2. Таблица на 1ом листе - это справочник и он имеет другое происхождение, из-за этого возникают не соответствия подобно Боливии. В процессе работы я подкорректирую его. Машине лучше указывать приоритет стан, что во 2ом листе, а тех, что нет - вычеркивать.

Во втором листе списка нет. Можете начинать корректировать список на первом листе.

Есть ещё ячейка B11, где написано "Польша, Румыния, ЕВРОПА (искл. ЕС, Швейцария, Норвегия)..." Тут не косяк. Грамотней было написать: ЕВРОПА (искл. ЕС (кроме Польша, Румыния), Швейцария, Норвегия), - но есть как есть.

Да, с этим вообще интересно .

9

Re: VBA: Сложная замена значений в ячейке с исключениями

"признаком группировки" я назвал критерии, по которым можно отнести группу стран. Это либо географическое объединение (Европа, Азия и др.), либо экономическое объединение (ЕС, СНГ).
   Данные реально весьма неказисты, в некоторых местах даже противоречивы. Простите, поспешил. Надо было хорошенько проверить, перед открытием темы. Это взято не из головы, реально рабочие данные. Данный вопрос поднимал на ПланетеЕксель. Пришёл к тому, что данные слишком бредовы, чтоб их обрабатывать в том виде, который сейчас.
   Спасибо.

10

Re: VBA: Сложная замена значений в ячейке с исключениями

uranium238, понимаете, исходные данные действительно сырые. Вот что получается на первом же этапе обработки:

http://img189.imageshack.us/img189/7207/image00120130416151438.png