Форум сайта python.su
0
Уважаемые форумчане. Застрял с одной задачей, не могу одолеть, прошу помощи…
Пишу макрос для Компас'а. Нужно отсортировать “данные”из Excel для дальнейшей вставки значений в таблицу Компаса.
Можно и в Python и в VBA.
Не могу понятьдо конца, как это сделать… Не хватает знаний…
Прикреплённый файлы:
на форум.xlsx (12,1 KБ)
Офлайн
0
Вот часть кода
Прикреплённый файлы:
01.txt (2,4 KБ)
Офлайн
27
Вот фрагмент, собирающий данные из первой таблицы для добавления в таблицу номер 2
Обрати внимание на нумерацию строк-колонок для таблицы Excell. Я не разбираюсь в VBA и поэтому здесь я пишу реальные номера строк-колонок. Если в твоём скрипте используются индексы, то внеси соответствующие поправки в нумерацию.
# Для сбора значений используем словарь. У словаря в качестве ключа используются # только уникальные значения data_for_table = {} for col in range(1,15): # Здесь использована нумерация строк и колонок как в самой исходной таблице # т.е. ячейка В2 здесь нумерована как (2, 2) # Если у тебя в нумерации используются индексы, то необходимо исправить нумерацию tip = sheet.cells(2, col).value polusa = sheet.cells(3, col).value amper = sheet.cells(4, col).value nomer = sheet.cells(5, col).value # В качестве ключа будет строка в виде "полюса/ампер" kluch = "{}/{}".format(polusa, amper) # Сольём в одну строку тип и номер tip_s_nom = "{}{}".format(tip, nomer) # ----------- Краткая запись предыдущих строк --------------------- # kluch = "{}/{}".format(sheet.cells(3, col).value, sheet.cells(4, col).value) # tip_s_nom = "{}{}".format(sheet.cells(2, col).value, sheet.cells(5, col).value) # ----------- Конец краткой записи ------------------------------ # Проверим есть ли ключ в словаре if kluch in data_for_table: # Ключ есть, берём его значение znachenie = data_for_table[kluch] else: # Нет ключа, создадим пустой список для значения znachenie = [] # На всякий случай проверим есть ли такой тип в списке if not (tip_s_nom in znachenie): znachenie.append(tip_s_nom) # Добавим в список отсутствующий data_for_table[kluch] = znachenie # запишем или перепишем имеющийся # После работы цикла получим словарь с приблизительно таким содержимым: #{"1/16":["QF6", "QF10", "QF11", "QF12", "QF13"], "3/32":["QF1"], и т.д.} # Для записи в тот же Excell в цикле "расшифруем" содержимое словаря for key, item in data_for_table.items(): spolusa, samper = key.split("/") # разобъём строку по символу "/" # Если требуется числовое значение, то надо будет преобразовать # строку в число polusa = int(spolusa) # Преобразуем в число amper = int(samper) # Преобразуем в число tipi =",".join(item) # Соберём строку из списка # Данные для одной строки записи получены, их можно писать.
Офлайн
0
Уважаемый Rafik, Вы спасли меня!
От долгих и мучительных исканий и метаний! Огромное Вам спасибо! Спасибо, что делитесь Вашими знаниями!
Это то, что нужно!
Офлайн