Поиск и выборка данных из массива с распределением по разным листам, согласно условию отбора - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день. Подскажите, пожалуйста, как можно решить задачу с выборкой данных с общего листа и распределение этих данных по другим листам, согласно выставленным условиям? На первом (основном ) листе в столбце №1 указаны номера кабинетов, в которых сидят сотрудники (причем в одном и том же кабинете сидит несколько сотрудников, кабинеты указаны вразнобой и их нельзя упорядочить). В столбце №2 указаны фамилии сотрудников. Таким образом, напротив каждого номера кабинета расположена фамилия сотрудника. Пример: 43 Иванов 44 Петров 45 Сидоров 44 Смирнов Т.е. в кабинете 43 сидит Иванов, в кабинете 44 – Петров и Смирнов, в кабинете 45 – Сидоров. Остальным листам присвоены наименования согласно номеру кабинета. На выходе должно получиться : на листе 43 одна строка со значением Иванов, на листе 44 – две строки Петров и Смирнов, на листе 45 – Сидоров.

Решение задачи: «Поиск и выборка данных из массива с распределением по разным листам, согласно условию отбора»

textual
Листинг программы
Sub PereborFailov() 'коллекция в словаре
    Dim a, i&, t$, Dic As Object
    Dim el, col
    
    a = Range("C3", Cells(Rows.Count, "A").End(xlUp)).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        .CompareMode = 1
        For i = 1 To UBound(a)
            t = a(i, 1)
            If Not .exists(t) Then .Add t, New Collection
            .Item(t).Add a(i, 2) & "|" & a(i, 3) & "|" & i
        Next
    End With
    
    For Each el In Dic.keys
        Debug.Print "Открываем файл " & el
        For Each col In Dic.Item(el)
            Debug.Print "Ищем данные " & col
        Next
        Debug.Print "Закрываем файл " & el
    Next
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы