2

Microsoft Excel - Как связать или скопировать ячейки на другой лист в каждой n-й строке. У меня есть интересная проблема. Это, вероятно, просто, но я не могу понять это.

У меня есть список ячеек (около 10 столбцов и более тысячи строк, которые скоро будут расширяться) A1-A10 и вниз Это мои заголовки и основные входные ячейки (назовем этот итоговый лист)

Мне нужно, чтобы эти ячейки были скопированы и предпочтительно привязаны к соседнему рабочему листу (подробному листу), но таким образом, чтобы каждая ячейка (или 10 ячеек в поперечнике) копировалась на каждой 20-й строке.

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

Более подробная информация:
Каждая строка, в которую копируются эти ячейки, становится строкой заголовка для каждого 20-строчного модуля. 19 строк под скопированными заголовками остаются пустыми, а подробные вычисления выполняются в 19 строках справа. Каждый раздел представляет собой идентичный модуль с множеством подробных расчетов и результатами по 1 строке в каждом модуле. В настоящее время я использую только подробный лист, и добавление или удаление модулей и их заголовков занимает очень много времени.

Спасибо за любые ответы. Мартин

3 ответа3

2

Возможно, это сработает:

Создайте столбец A, Counter и установите в его ячейках 0,1,2,3, ...,(количество строк). Создайте новый столбец, RowType. Установите RowType на =IF(MOD(A1,20) = 0, "Summary", "Detail") и перетащите его вниз.

Это создаст таблицу, которая выглядит следующим образом:

 0  Summary
 1  Detail
 2  Detail
 3  Detail
 4  Detail
 5  Detail
 6  Detail
 7  Detail
 8  Detail
 9  Detail
10  Detail
11  Detail
12  Detail
13  Detail
14  Detail
15  Detail
16  Detail
17  Detail
18  Detail
19  Detail
20  Summary
21  Detail
22  Detail
23  Detail
24  Detail

Затем отфильтруйте столбец RowType для Summary и вставьте ваши ячейки как обычно

0

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

В 2003 году перейдите в меню "Сервис" - затем "Параметры". В диалоговом окне перейдите на вкладку "Пользовательские списки". Вы можете либо напечатать список в поле "Записи списка", разделенные запятыми, либо импортировать список из существующих ячеек.

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

Если у вас 2007, вы можете перейти к пользовательским спискам, нажав кнопку "Office", а затем кнопку "Параметры Excel". Там вы увидите кнопку для пользовательских списков.

0

Поместите кнопку в свой сводный лист и поместите этот код позади него, изменив имена листов и название кнопки на то, что вы хотите использовать. Затем каждый раз, когда вы хотите повторить линии детализации, нажмите кнопку. Примечание. Я написал это так, что «Сводная таблица» - «Лист2», а «Подробная таблица» - «Лист1»:

Private Sub RedoDetailedSheet_Click()

Dim i As Integer, j As Integer

For i = 0 To Worksheets("Sheet2").UsedRange.Rows.Count - 1
    For j = 1 To Worksheets("Sheet2").UsedRange.Columns.Count

        Worksheets("Sheet1").Cells(20 * i + 1, j).Formula = "=Sheet2!" _
            & Worksheets("Sheet2").Cells(i + 1, j).Address

    Next j
Next i

End Sub

Вот код, основанный на вашем примере файла для этой конкретной ситуации. Вам нужно будет изменить формат столбца Модель на Общий.

Private Sub RedoDetailedSheet_Click()

Dim i As Integer, j As Integer

For i = 0 To Worksheets("Input").UsedRange.Rows.Count - 2
    For j = 1 To Worksheets("Input").UsedRange.Columns.Count

        Worksheets("Output").Cells(20 * i + 29, j + 2).Formula = "=Input!" _
            & Worksheets("Input").Cells(i + 2, j).Address

    Next j
Next i

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .