Я пытаюсь сравнить данные о расходах из двух источников: ручной ввод данных от пользователей и автоматическое извлечение данных для разных бизнес-единиц. Общими данными из обоих источников является идентификатор расходов.
Идея состоит в том, чтобы объединить оба источника данных (таблицы Excel) в одну таблицу, где первые два столбца - это идентификатор расходов, следующий столбец - данные о расходах пользователей, связанные с этим идентификатором, а последний - расходы. данные из автоматического извлечения.
В этой таблице я буду «удваивать» общие расходы для каждого идентификатора, но затем я могу создать сводную таблицу, в которой я буду четко сравнивать вводимые пользователем данные с автоматическим извлечением для каждого идентификатора.
Я выделил важные поля, которые мне нужно скопировать и вставить.
[! [PGIvsManual] [3]] [3]
Мой код следующий
Sub PGIvsManualInput()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set PGIvsManualTable = Worksheets("PGI vs Dépenses (Auto)").ListObjects("PGIvsManualInputAuto")
Set PGITable = Worksheets("PGI Clean").ListObjects("PGIExtract")
Set ManualInputTable = Worksheets("Dépenses").ListObjects("Dépenses")
'Cleaning the table
With Worksheets("PGI vs Dépenses (Auto)").Range("PGIvsManualInputAuto")
.ClearContents
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
With PGIvsManualTable
If .ListRows.Count >= 1 Then
.DataBodyRange.Rows.Delete
End If
End With
'Copy the data
PGITable.ListColumns(1).DataBodyRange.Resize(, 2).Copy Destination:= _
PGIvsManualTable
Муравей вот где все становится грязно. Я даже не могу получить первую партию данных для правильного импорта! Я пытаюсь скопировать 2 первых столбца из PGITable и вставить их в 2 первых столбца PGIvsManualTable. Ранее это работало без определения какого-либо столбца назначения в моем первом примере, хотя во входной и целевой таблицах не было одинакового количества столбцов
Но в этом случае это расширяет вставку на все столбцы моей таблицы назначения! Я не понимаю этого компорта, так как он не встречается в моем предыдущем примере с в основном тем же кодом !!
Я пытался установить пункт назначения следующим образом, но всегда получал ошибки:
PGIvsManualTable.ListColumns(1).DataBodyRange.Resize(, 2) ==> Error 91
PGIvsManualTable.DataBodyRange(1,1) ==> Error 438
PGIvsManualTable.ListColumns(1).Resize(, 2) ==> Error 438
И несколько других, но это никогда не работало должным образом.
Я ожидаю, что выходные данные будут правильно скопированы / вставлены в выбранный столбец в столбце назначения на основе координат, указанных в ListObecjts.DataBodyRange.
Полагаю, что если мне удастся заставить этот первый импорт работать, все остальные будут работать на том же шаблоне, но в то же время мой код работает на предыдущем примере.