2012-04-18 2 views
0

Я пытаюсь создать стандартизованную форму в Excel для данных, которые я извлекаю из других книг.Как создать персонализированные отчеты различной длины?

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

Моя проблема заключается в том, что количество записей (строк) является вариантом. Я не могу просто сопоставить ячейки из листа данных с листом отчета, потому что для некоторых отчетов будет 20 строк, некоторым будет 8 и т. Д.

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

Я понимаю, что это можно сделать намного проще в Access, но у меня нет доступа.

Спасибо за ввод.

+0

ли прилежащей данные? то есть 'set myrange = Range (« a1 », Range (« a1 »). end (xlDown)): myrange.Select' выбирает все смежные ячейки в a1 –

+0

, вы действительно должны использовать xlUp в случае, если в столбце A есть пустые ячейки | set myrange = Range ("a1", Range ("a65536"). End (xlUp)) – Sam

+0

Да, данные смежны. Итак, что бы я сделал в этом случае? Для каждой строки в выборе введите строку и скопируйте следующие данные в ячейку. Звучит ли это правильно? – toolshed

ответ

0

Во-первых, у вас есть правильная идея с листом данных и отдельным листом отчета, который отображает требуемые данные в подходящем формате.

«Я не могу просто сопоставить ячейки из листа данных с листом отчета, потому что для некоторых отчетов будет 20 строк, некоторым будет 8 и т. Д.»

Я не уверен, что вы подразумеваете под этим, вы говорите, что строки в листе данных могут расти и сокращаться? Или вы говорите, что хотите, чтобы конечный пользователь мог выбирать строки, которые они хотят в отчете? Другими словами, что определяет, какие строки вы хотите в отчете?

Кроме этого, во-первых, вы хотите работать только со значениями ячейки, таким образом, при копировании их в лист отчетов все форматирование в вашем листе отчета сохраняется.

Что касается передачи данных, то существует несколько способов использования vba для этого в зависимости от вашего ответа на мой вопрос выше.

  • Предварительный фильтр строк на основе критериев (используя копию в другое место)
  • Копировать все строки выбрал пользователь (не должно быть никакой необходимости использовать петлю, для каждой строки и т.д.)
  • Скопируйте строки на основе поля ввода пользователя, в котором пользователь вводит требуемые строки.

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

Worksheets("Report").Range("B:B,D:E").EntireColumn.Hidden = True 
+0

Спасибо за ответ. Чтобы ответить на ваш вопрос, необходимые данные будут вручную введены в отдельные вкладки, и данные из всех этих строк будут втянуты в отчет.Фактически, пользователь будет копировать и вставлять выбранные строки в отдельные вкладки. Я думаю, что я должен использовать макрос VBA для создания нескольких новых строк, зависящих от того, сколько записей он находит на других листах. Кроме того, я не могу просто скопировать и вставить столбец, а затем скрыть ненужные, потому что многие значения в отчете управляются формулой. – toolshed

Смежные вопросы