![]() |
|
#1
|
|||
|
|||
![]() помогите пожалуйста, я не особо то работаю в екселе, но тут понадобилось. Ситуация такая:
У меня на первом листе таблица с сводными данными, на втором листе у меня, что то вроде отчета (протокола), в котором разные ячейки ссылаются на сводную. Т.е. первый протоколе я сделал определенные формулы и ссылки на сводную страничку на нужную ячейку(вернее на первые пять строк этой таблицы, последующие пять строк для следующего протокола, ну и т.д.), все работает все ОК! Но потом у меня возник вопрос размножить мой отчет на то количество, сколько раз повторяется в сводной таблице ети пять сводных строк с данными для каждого протокола. Я как сделал: взял просто первый протокол выделил и тупо потянул крестиком в низ, что бы он мне размножил мой протокол, ну и соответственно и все формулы и ссылки, которые я писал в первом. Получилось следующее: протокол то он размножил и формулы то же, но ссылки на ячейки из сводной таблиц е он взял не те которые мне были нужны. Вот что то так: в сводной таблице между нужными ячейками у меня разница в 5 ячеек, а в протоколах у меня между одинаковыми ячейками получается разница в 20 ячеек(т.е. каждая 20 ячейка (одного столбца) протокола мне нужно что бы ссылалась на каждую 5 ячейку (одного столбца) сводных данных, а в реале происходит, что при «растягивании» протокола ячейки ссылаются на каждую 20-ую ячейку сводной таблицы). Пример: 1) КАК У МЕНЯ ПОЛУЧИЛОСЬ: СВОДНАЯ ТАБЛИЦА(лист1) ОТЧЕТ(лист2): a1=1 A5=(лист1!A1)=1 (первый вариант, который я саполнил в ручную) A2=7 A10=(лист1!A10)=23 (так получилось после A3=C A15=(лист1!А15)=34 растягивания) A4=5 ну и так далее A5=0,5 A6=S A7=11 A10=23 A15=34 2) КАК ХОТЕЛОСЬ БЫ: СВОДНАЯ ТАБЛИЦА(лист1) ОТЧЕТ(лист2): a1=1 A5=(лист1!A1)=1 первый вариант, который я саполнил в ручную) A2=7 A10=(лист1!A3)=8 A3=8 A15=(лист1!А5)=0,5 A4=5 А20=(лист1!А7)=11 A5=0,5 вот а так бы хотелось не вводя все ето в ручную, A6=S т.е. что бы при тупом растягивании (или еще как A7=11 ячейки ссылались на нужную ячейку, ну что бы A10=23 каждая 5-ая ячейка ссылалась на каждую 3-ию, а не A15=34 на каждую 5-ую |
#2
|
||||
|
||||
![]() Вопрос вобще-то не совсем по адресу, такую проблемку удобнее решать через макросы Visual Basic а не через Дельфи.
Второй лист лучше создавать с помощью макроса. Нужен цикл перебирающий строки таблицы, пачками по столько сколько тебе нужно, а в теле цикла - напиши алгоритм выведения формулы для такой-то строки и Код:
Лист1.Cells[a,b].Formula = <какая тебе нужна формула, создаваемая алгоритмом (не забудь что это строка)> |