Excel-копия, включая скрытые столбцы

Я использую лист Excel 2016, который содержит несколько столбцов, скрытых для целей пользовательского интерфейса. Мне нужно иметь возможность отфильтровывать данные, а затем копировать их в другой лист с неповрежденными скрытыми столбцами и показывать после вставки в место назначения (он будет содержать более длинный журнал подобных транзакций, а не только одну копию-вставку).

Добавление рисунка цели - то есть надежду на то, чтобы скрытое содержимое столбцов B и C вставлялось в электронную таблицу адресата. Это вообще возможно?

enter image description here

Вероятно, не очень хорошая форма, чтобы задать 2 вопроса в одном сообщении, однако есть ли альтернативы выполнению функции фильтрации и копирования-вставки в другую таблицу вручную? То есть:

  • запустить ручной фильтр для очистки пробелов в поле "Количество";
  • сделать выбор
  • делать вручную Ctrl + C - функция Ctrl + V

Есть ли способ сделать это проще? К сожалению, нет VBA или макро опыт до сих пор.

Спасибо!

0
источник поделиться
2 ответа

Нет, вы не можете сделать это с помощью обычных функций Excel, поскольку Excel не может знать, какие столбцы/ячейки пропускать, когда один из столбцов имеет пустые значения, это то, что нужно решить и сделать человеком.

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

  • Просмотр/Макросы/Макрос записи

  • Назовите свой макрос

Сделайте то, что вам нужно, имея в виду, что Excel записывает каждое ваше движение, преобразовывая их в коды VBA в фоновом режиме. В вашем случае выполните следующие действия:

  • Фильтрация заготовок с использованием фильтра
  • Выберите диапазон, используя CTRL-G/Special/Current Region (не выбирайте ячейки с помощью мыши или с вашей клавиатурой, ваш код должен быть общим, не должен содержать диапазоны вручную, поскольку вы не хотите кодировать)
  • CTRL-C для копирования
  • Если ячейка "для вставки" не фиксирована для всех ваших случаев, вы должны прекратить запись своего макроса здесь. Если вставлена ячейка, то вставьте содержимое во время записи макроса.

После того, как макрос записан, назначьте ярлык для нового макроса, используя: Macros/View Macros/Options menu

Вуаля! Теперь вы можете сделать именно то, что вы сделали при записи макроса, используя эту комбинацию клавиш. Если вы не вставляли контент во время записи, вы с/б используете макрос короткой вырезкой и переходите к ячейке, которую хотите вставить, и нажмите CTRL-V.

Когда вы чувствуете себя достаточно уверенно, попробуйте меню " Редактировать" в Макросах и посмотрите, какой у вас код в руке, возможно, сделайте небольшие изменения и т.д. Я видел много людей, которые не знакомы с базовым кодированием в начале, но как-то начали писать свои собственные коды после просмотра этой функции в Excel. Удачи!

+1
источник

Изменить - Полностью неправильно понял вопрос!

Вы хотите включать скрытые ячейки при копировании - это стандартное поведение для скрытых ячеек, но не для фильтрованных столбцов. Если вы хотите избежать VBA abd, вы имеете дело с небольшими смежными диапазонами, то простая формула может быть самым простым решением.

Используя ваш пример, я произвольно буду называть исходный лист "Sheet1" и пункт назначения "Sheet2". В Sheet2 щелкните ячейку A2 и введите ее в строку формул: = Sheet1! A3 Теперь щелкните правый нижний угол ячейки A2 и перетащите его вправо через D2, затем вниз до D7. В выделенном диапазоне нажмите ctrl C, чтобы скопировать, затем щелкните правой кнопкой мыши, чтобы вставить специальные значения.

Все готово!

Здесь решение VBA:

Sub copyrng()

Dim srcrng As Range
Dim tmprng As Range
Dim dstrng As Range
Dim srcws As Worksheet
Dim dstws As Worksheet



Set srcrng = Application.InputBox("Area to copy", "Source", Type:=8)
Set srcws = ActiveSheet
Set tmprng = Application.InputBox("Top Left Corner of Destination",  "Destination", Type:=8)
Set dstws = ActiveSheet
Set dstrng = dstws.Range(tmprng.Address, Cells(tmprng.Row + srcrng.Rows.Count - 1, tmprng.Column + srcrng.Columns.Count - 1))

dstrng = srcrng.Value

 End Sub

Первый ответ (ответ на неправильный вопрос)

Вы можете копировать видимые ячейки с помощью "Go To..."

Выделите диапазон, который вы хотите скопировать, нажмите Ctrl G, нажмите "Special...", выберите "Только видимые ячейки", а затем нажмите Ctrl C для копирования.

Теперь все скрытые ячейки будут оставлены при вставке.

+1
источник

Посмотрите другие вопросы по метке или Задайте вопрос