Я пытаюсь заполнить определенные ячейки на нескольких листах Excel данными из таблицы.
Вот пример того, что я пытаюсь сделать.
- На первом листе все данные
- На остальных листах есть ячейки, которые необходимо заполнить данными с первого листа.
Я знаю, что можно автозаполнить каждый лист отдельно данными с первого листа. Но поскольку листов много, мне было интересно, есть ли более простой способ сделать это.
решение1
Здесь есть пара путей, но они полагаются на соответствие макета от страницы к странице. И на то, что формула в ячейке результата одинакова от страницы к странице.
Например, скажем, у вас есть один набор ячеек поиска, который вы показываете в примере, который должен быть на каждой странице. Вы можете либо выбрать все вкладки workSHEET для всех страниц, и они будут редактироваться как группа, так что когда вы создаете этот набор ячеек поиска на одной из них, одни и те же данные вводятся в одни и те же места на всех из них, или вы можете создать один лист, а затем скопировать его по мере необходимости, чтобы иметь все страницы, необходимые для вашей работы.
Если вы начинаете с нуля, последний путь, безусловно, проще. Если у вас есть существующие листы и материалы и вам нужно добавить эти блоки поиска, первый путь — это путь.
Это сложнее, если они должны быть на каждом листе, но в немного разных местах (например, не B10:C11, но, возможно, некоторые из них должны быть в F23:G11). В этом случае вы можете найти неиспользуемое место на листах, следовать предыдущему подходу выше (выбрать все вкладки и т. д.) и построить блок. Затем перейдите на каждый лист и выберите, затем перетащите ячейки блока в нужные им места на разных страницах. Если эти различия ограничены, может быть, всего три разных набора адресов, вы можете смешать их, чтобы выбрать вкладки и заполнить весь первый набор, затем следующую группу и, наконец, последнюю. Точные потребности диктуют, но следуйте идее.
Или просто постройте его на одном, затем скопируйте блок поиска в буфер обмена и переходите на каждую страницу, вставляя блок по мере продвижения. Если вы используете абсолютную адресацию для диапазонов поиска (значение поиска, столбец результатов поиска или диапазон результатов поиска) и относительную адресацию для чего-либо еще, это тоже будет работать хорошо.
Другой подход — создать блок, а затем использовать Immediate Window VBA для копирования и вставки. Создать диапазон для вставки тоже было бы легко, используя стандартные методы построения строк, так что это было бы сделано за пару маленьких шагов, а не бегать мышкой по листам, и поскольку это была бы команда для одноразового использования в Immediate Window, нет макроса, нет сохранения в виде файла макроса, вообще ничего подобного.
Но если листы будут по сути одинаковыми, и на каждом листе будет производиться поиск записи, но в диапазоне данных на «главной странице», И вы создаете ее с нуля, создайте главный лист, затем одну страницу с поиском и всем остальным, что нужно странице, а затем просто скопируйте лист столько раз, сколько необходимо.