Жизненая задача про мастера, ученика и производственный цех - VBA

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

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

Добрый день, уважаемые коллеги В продолжение темы, про безразмерный массив в VBA, не могу решить задачу, кажется все просто, на практике не получается сделать. Представьте: на предприятии 10 цехов, где работают мастера и ученики, в двух колонках указаны их табельные номера, в третьей колонке указано кто закончил работу http://screenshot.ru/upload/image/WoT2 Необходимо посчитать 2 вещи: 1. Сколько раз мастера попадали в статистику, например цеха №4. Необходимо, пробежаться по колонке номер четыре, и сложить количество повторов табельных номеров мастеров, например 343 - 5, 278 - 6, 889 - 1.. табельные всегда 3-х значное целочисленное. Результаты любым удобным способом в таблицу, на лист "таблица" 2. Сколько раз заканчивали работу, именно мастера. Пусть будет для примера цеха №4, для этого нужно пробежаться по колонке четыре, что бы это был 7 цех, и сложить количество повторов табельных номеров мастеров при условии, что закончил мастер, а не ученик (колонка номер три) По идее, все бы сделал сам без проблем, если бы табельные номера были известны заранее и их было ограниченное адекватное количество, сложность задачи состоит в том, что бы сложить кол-во уникальных повторов табельных номеров. По поводу словарей (VBA Dictionary), не понял как их переопределять каждый раз... В прикрепленном файле, вариант решения через массив, для подобного случая, предложенный уважаемым

Michael99

Безразмерный массив в VBA Я так и не могу его применить к "более сложному" варианту задачи. Заранее благодарю за помощь!

Решение задачи: «Жизненая задача про мастера, ученика и производственный цех»

textual
Листинг программы
Option Explicit
 
Sub tt()
    Dim a, i&, t$
 
    With CreateObject("scripting.dictionary"): .comparemode = 1
        a = Sheets("Данные").[h1].CurrentRegion.Value
        For i = 2 To UBound(a)
            t = a(i, 4) & "|" & a(i, 1)    '1. Сколько раз мастера попадали в статистику
            .Item(t) = .Item(t) + 1
            t = a(i, 4) & "|" & a(i, 3)    '2. Сколько раз заканчивали работу, именно мастера (но и ученики, но можно отфильтровать сразу или в конце)
            .Item(t) = .Item(t) + 1
        Next
        Workbooks.Add(1).Sheets(1).[a1].Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
    End With
 
End Sub

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


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

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

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