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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2015, 17:04   #1
ILF_ollie
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 21
По умолчанию Формирование списка уникальных значений для заданного уровня

Добрый день, уважаемые форумчане.
Очень прошу помочь со следующей задачей.

Необходимо копировать в таблицу список всех соответствующих городов на основании выбранного континента/страны/города.

Ниже приведено более детальное описание задачи:

В файле имеется лист 1. Ввод данных с ячейками, в которых вводятся значения город, страна, континент.
Задача, чтобы при нажатии на кнопку рядом с соответствующим полем, на листе 3. Отчет в первом столбце таблицы Города сформировался список всех уникальных городов для соответствующей уровня, на основе списка всех городов/стран/континентов, имеющегося на вкладке 2. Список уникальных значений.

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

Вкладка 4. Список всех данных используется для подставления значений в форму на листе 1. Ввод данных

Файл в приложении.

С уважением,
Вложения
Тип файла: xlsx Города.xlsx (23.2 Кб, 15 просмотров)
ILF_ollie вне форума Ответить с цитированием
Старый 03.10.2015, 12:30   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

ILF_ollie, привет
попробуйте так
Код:
Sub GorStrana() 'Сформировать список всех городов для выбранной страны
Call ertert(2, Range("C5").Value)
End Sub

Sub GorKont() 'Сформировать список всех городов для выбранного континента
Call ertert(3, Range("C6").Value)
End Sub

Sub ertert(k As Long, srch As String)
Dim x, i&, rng As Range
With Sheets("2. Список уникальных значений")
    x = .Range("A1:C" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
End With
Set rng = Sheets("3. Отчет").ListObjects(1).DataBodyRange.Columns(1)
rng.ClearContents
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 1 To UBound(x, 1)
        If x(i, k) = srch Then .Item(x(i, 1)) = Empty
    Next i
    If .Count > 0 Then rng.Resize(.Count).Value = Application.Transpose(.keys)
End With
End Sub
nilem вне форума Ответить с цитированием
Старый 05.10.2015, 15:29   #3
ILF_ollie
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
ILF_ollie, привет
попробуйте так
Отлично, спасибо большое!
ILF_ollie вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание списка уникальных значений по условиям Gobaith Microsoft Office Excel 11 05.07.2012 23:13
Выборка значений для автоматического списка cheshire_cat Microsoft Office Excel 2 21.12.2011 13:50
Создание динамического списка из уникальных значений mihonf Microsoft Office Excel 4 04.04.2011 20:11
Перебор ячеек столбца и формирование нового листа из уникальных записей Ad1r Microsoft Office Excel 3 06.05.2010 09:38
Список уникальных значений PARTOS Microsoft Office Excel 13 18.12.2009 11:14