Есть ли способ скопировать все пустые ячейки набора данных на одном листе и вставить пустые ячейки в набор данных на другом листе?
Есть ли способ скопировать все пустые ячейки набора данных на одном листе и вставить пустые ячейки в набор данных на другом листе?
Для каждой пустой ячейки в «Листе продаж» соответствующая ячейка на вкладке «Вставки» также должна быть пустой. При этом мне нужно пройти и удалить соответствующие ячейки на вкладке «Вставки».
Например, ячейки H2 и I2 листа продаж пусты, поэтому ячейки «Вставки» D2 и E2 должны быть пустыми, чтобы для этих ячеек не было оператора вставки.
2 ответа
РЕШЕНО!! (2 способа)
ВЫСОКИЙ УРОВЕНЬ
- Копирование нескольких выделенных фрагментов невозможно с помощью стандартного метода CTRL + C.
- Таким образом, решение влечет за собой сочетание функций и/или VB.
МЕТОДЫ А и Б
Два подхода:
- A: Функциональный
- B: На основе VB
Метод A: см. листа Google.образец
введите сюда описание изображения
Метод Б : ВБ
Sub clr_corresponding()
'Pre-requisite: entirety of first data set (Sales) must be selected
On Error GoTo errtrap
addr_2 = InputBox("Enter top left cell of 2nd dataset - e.g. C15", "User input")
MsgBox ("If the entirety of List1 not already selected, you'll need to re-run this macro!")
For Each cell In Selection
cell.Activate
r_1 = ActiveCell.Row
c_1 = ActiveCell.Column
Exit For
Next
Selection.SpecialCells(xlCellTypeBlanks).Select
i = 0
For Each cell In Selection
cell.Activate
r_2 = ActiveCell.Row
c_2 = ActiveCell.Column
Range(addr_2).Offset(r_2 - r_1, c_2 - c_1).Clear
Next
'Range("K2").Offset(i - 1).Value = ActiveCell.Address
'cell.Address
'arr.Add (cell.Address) 'https://stackoverflow.com/questions/18097756/fastest-way-to-add-an-item-to-an-array
errtrap:
MsgBox ("Invalid selection")
Exit Sub
End Sub
СРАВНЕНИЕ
Объявления (+) / Dis (-):
А:
- Без макросов
- Требуется отдельный раздел (может усложнить работу с зависимостями)
Б:
- Взаимодействует напрямую с целевой выходной таблицей (например, листом «Вставки»).
- Нежелательные изменения (например, из-за неправильных введенных данных) невозможно отменить (в таких случаях необходимо будет вернуться к последнему сохраненному документу).
Есть довольно простой способ сделать это.
Перейдите к листу, на котором есть заготовки.
. Выделите (выделите) всю проблемную область. Не стесняйтесь... если вы хотите то же самое на странице «Вставки», вам следует быть здесь исчерпывающим. Поэтому, если проблемная область на странице «Вставки» — A1:LZS2020, выберите этот регион. Если вы знаете координаты, используйте и введите их. Используйте, выберите
и в диалоговом окне выберите . Обратите внимание, что ОНИ теперь являются единственными выделенными ячейками. Вызовите функцию именованного диапазона. Создайте именованный диапазон, назовите что-то вроде
. Обратите внимание, что формула «Ссылается на» будет иметь (однако) длинный список адресов ячеек, соответствующих выделенным ячейкам. Сохраните результаты. Щелкните именованный диапазон и нажмите, чтобы перейти к части «Ссылается на», и когда она будет выделена, скопируйте ее в буфер обмена. Возврат на сторону ячейки. Найдите пустую ячейку, нажмите
чтобы отредактировать его и вставить только что скопированный материал. Нажимать . Нажимать чтобы выделить вторую ячейку, желательно пустую. Ты собираешься так, чтобы остались только адреса ячеек, без имени листа. Итак, выясните, что это за строка, выделите ее в одной ячейке и скопируйте в буфер обмена. Нажимать для функции «Найти и заменить». Вставьте в поле «Найти что». Убедитесь, что поле «С чем» пусто. Заменить все. Скопируйте строку адресов ячеек:
должно получиться хорошо. Перейдите на страницу Вставки. Введите функцию именованного диапазона. Создайте второй именованный диапазон с соответствующим именем (возможно, BlanksInserts). Вставьте свою строку с ее в поле «Ссылается на».
Сделанный. Звучит как кошмар, но мне БУКВАЛЬНО потребовалось 34 секунды, чтобы сделать это. Это одно из тех пятидесятиминутных объяснений, в конце которых кто-то говорит: «О, ты имеешь в виду сделать это?» и требуется 10 секунд, чтобы сделать что-то, что заставит тебя выглядеть скучным дураком перед всеми. Да, хотя сделай это.
Через секунду я расскажу, как им пользоваться. Чтобы справиться с постоянно меняющимся полем пробелов, у вас уже есть нужные именованные диапазоны, просто используйте
ОК, как использовать. Слева от панели редактирования формул над ячейками находится поле с треугольником вниз, чтобы увидеть больше строк и выбрать из них все. Что там происходит? Что ж, если вы еще не нажали на нее, вы просто увидите адрес активной ячейки. Или размер диапазона («5R x 2C», если выбрано пять строк и два столбца). Вы можете увидеть имя именованного диапазона, если у вас есть выбор, соответствующий выделенному.
Убедитесь, что вы находитесь на листе «Вставки». Нажмите на этот треугольник/стрелку вниз. Обратите внимание, что в списке указаны два созданных вами именованных диапазона. Может быть, больше, может быть НАМНОГО больше. В любом случае найдите И щелкните Именованный диапазон для страницы «Вставки», возможно, это были BlanksInserts. Обратите внимание, что внезапно выделяется несколько ячеек. Это ТОЧНО те ячейки, которые в листе продаж пусты... Поэтому нажмите
Сделанный.
КАЖДАЯ ячейка в диапазоне на странице «Таблица продаж», которая была пустой, теперь пуста и на странице «Вставки». Просто как тот.
Также обратите внимание, что НИ ОДНА из других ячеек на странице «Вставки» не затронута. Таким образом, если в ячейке A1 было слово «корова», оно все равно есть.
(Если это не важно («каким-то образом» и «удивительно»), есть гораздо более простой способ сделать это: просто выберите и скопируйте на страницу «Вставки» все содержимое листа продаж. Но вы, конечно же, не хотите этого. ..)
Таким образом, у A1 в листе продаж может быть «43», а на странице «Вставки» у A1 есть «корова», что, по-видимому, желательно. На странице «Вставки» были удалены ТОЛЬКО пустые ячейки на странице «Таблица продаж». Все остальное на странице «Вставки», заполненное чем-то или само по себе пустым, осталось в покое и остается таким, каким оно было. Это то, о чем вы просили.
Опять кошмар описывать. Совершенно просто и быстро сделать.