печатать словарь в новом листе

Вот пример данных, над которыми работают мои макросы.

Следующий код использует объект словаря для подсчета нажатий кнопок, а затем записей AOI, а затем распечатывает подсчеты для других столбцов на том же листе:

Dim dBT As Object 'global dictionary Sub buttonpresscount() 'constants for column positions Const COL_BLOCK As Long = 1 Const COL_TRIAL As Long = 2 Const COL_ACT As Long = 7 Const COL_AOI As Long = 8 Dim rng As Range, lastrow As Long, sht As Worksheet Dim d, r As Long, k, resBT() Set sht = Worksheets("full test") lastrow = Cells(Rows.Count, 3).End(xlUp).Row Set dBT = CreateObject("scripting.dictionary") Set rng = sht.Range("B7:I" & lastrow) d = rng.Value 'get the data into an array ReDim resBT(1 To UBound(d), 1 To 1) 'resize the array which will ' be placed in ColT 'get unique combinations of Block and Trial and pressedcounts for each For r = 1 To UBound(d, 1) k = d(r, COL_BLOCK) & "|" & d(r, COL_TRIAL) 'create key dBT(k) = dBT(k) + IIf(d(r, COL_ACT) <> "", 1, 0) Next r 'populate array with appropriate counts for each row For r = 1 To UBound(d, 1) k = d(r, 1) & "|" & d(r, 2) 'create key resBT(r, 1) = dBT(k) 'get the count Next r 'place array to sheet sht.Range("T7").Resize(UBound(resBT, 1), 1) = resBT 'clear dictionary dBT.RemoveAll 'count AOI entries For r = 1 To UBound(d, 1) k = d(r, COL_BLOCK) & "|" & d(r, COL_TRIAL) 'create key dBT(k) = dBT(k) + IIf(d(r, COL_AOI) = "AOI Entry", 1, 0) Next r 'populate array with appropriate counts for each row For r = 1 To UBound(d, 1) k = d(r, 1) & "|" & d(r, 2) 'create key resBT(r, 1) = dBT(k) 'get the count Next r 'place array to sheet sht.Range("U7").Resize(UBound(resBT, 1), 1) = resBT End Sub 

Теперь я хочу, чтобы бит «count AOI entries» кода печатался в выделенные ячейки на новом листе, который был создан с помощью этого кода:

 Sub createsummarytable() 'add new worksheet to data Dim datasummary As Worksheet With ThisWorkbook.Worksheets.Add .Name = "datasummary" Dim i As Long Dim j As Long Dim t As Long Dim Startrow As Long Startrow = -4 t = 1 'print Block number headings For i = 1 To 40 If i < 31 Then .Cells(Startrow + (5 * i), 1).Value = "Block " & i Else 'print transfer block headings .Cells(Startrow + (5 * i), 1).Value = "Transfer Block " & t t = t + 1 End If 'print trial number headings For j = 1 To 18 .Cells((Startrow + 1) + (5 * i), j).Value = "Trial, " & j Next j Next i End With End Sub 

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

Вот скриншот того, как выглядит таблица в новом листе

Я хочу, чтобы записи AOI учитывались в первой строке ниже испытаний, но понятия не имеют, как отделить подсчеты для каждой пробной версии и заблокировать ее в разные строки и столбцы.

 '.... 'clear dictionary dBT.RemoveAll 'count AOI entries For r = 1 To UBound(d, 1) k = d(r, COL_BLOCK) & "|" & d(r, COL_TRIAL) 'create key dBT(k) = dBT(k) + IIf(d(r, COL_AOI) = "AOI Entry", 1, 0) Next r createsummarytable PopSummary dBT 

Sub, чтобы заполнить сводный лист (вероятно, потребуются некоторые проверки на «не найденные» случаи …)

 Sub PopSummary(dict) Dim sht As Worksheet, k, b, t, f, f2 Set sht = ThisWorkbook.Sheets("datasummary") For Each k In dict b = Split(k, "|")(0) 'get block t = Split(k, "|")(1) 'get trial 'find the block Set f = sht.Columns(1).Find(what:=b, lookat:=xlWhole, LookIn:=xlValues) If Not f Is Nothing Then 'find the trial under that block Set f2 = f.Offset(1, 0).EntireRow.Find(what:=t, lookat:=xlWhole, LookIn:=xlValues) If Not f2 Is Nothing Then f2.Offset(1, 0).Value = dict(k) End If Next k End Sub 
  • Ошибка выполнения с использованием словаря при использовании позднего связывания, но не раннего связывания
  • python - создание словаря из excel с использованием определенных столбцов
  • Объединение двух списков для создания словаря
  • Преобразование одного столбца в список dicts
  • Импорт данных excel во вложенный словарь
  • dictionary item = значение ячейки в последней строке в столбце для каждой группы
  • Словарь Python внутри списка (вытягивание отдельных значений)
  • Получить список ключей и значений во вложенном словаре, ориентированном по индексу
  • Как создать резюме с использованием словарей на основе excel с пустыми ячейками с помощью python? (vlookup с python)
  • Можно ли искать конкретную запись ключа / значения, а затем, если найден, удалить весь словарь?
  • Разбор JSON для Excel - Python
  • Давайте будем гением компьютера.