Добрый день! Есть такая проблема - дана строка таблицы из трех столбцов, например:
Электрические параметры
Частота
20 Гц
Электрические параметры
Ток
1.5 А
Электрические параметры
Мощность
100 Вт
Общие параметры
Размер
100 см
Общие параметры
Вес
5 кг
Можно ли формулами excel без макросов (если без них нельзя, то хоть с ними) сделать так, чтобы для всех строк, у которых есть ячейка "Электрические параметры" и справа от нее ячейка "Мощность", выполнялась следующая операция — на X строк выше (допустим, на 2 строки) вставлялась новая строка с ячейками: Параметры фильтрации ----- Мощность (AES) ----- 100 Вт
Вы очень остроумны, но если вас смущает мой слишком запутанный вопрос, могу переформулировать. Есть книга в 3 столбца с сотней строчек, при этом в книге периодически попадаются строчки с 3 ячейками вида: А В С
Вопрос - как сделать так, чтобы над всеми этими строчками с ячейками А В С добавлялись новые строчки с ячейками D E F? Так понятнее?
Аааа, так бы и сказали, я думал гуру excel просто сразу скажут куда копать. Книга во вложении. Я там указал, что ЕСТЬ СЕЙЧАС и что ХОТЕЛОСЬ БЫ ПОЛУЧИТЬ Буду очень благодарен любой помощи!
Подскажите хоть, как сделать поиск с заменой по НЕСКОЛЬКИМ ячейкам? Т.е. чтобы не как сейчас при Ctrl+H, где вводится значение одной ячейки, а чтобы можно было найти и заменить все пары ячеек
Вот круто, спасибо! А я уже скачал и начал читать "Использование макросов в экселе" Роман С. Ну то есть вот тут я так понимаю ищется первый столбец с такими данными:
Код
Set iCell = .Find("Электрические параметры", LookIn:=xlFormulas, LookAt:=xlPart)
А потом при нахождении его, сдвигаемся на столбец вперед и ищем вторую часть данных:
Код
If iCell.Offset(, 1) = "Мощность" Then
Получается, что нельзя просто сразу найти пару ячеек, нужно делать как у вас - постепенно по столбцам смотреть?
Павел пишет: Пока делал уже появились ответы.. Мой вариант
А у вас чуть другой принцип, как я вижу - вы ищете по мощности, а потом уже дописываете нужную строку, только есть один нюанс - у вас нет зависимости от левой ячейки. Возможно я плохо описал задачу, но, если обобщить, не каждая ячейка Мощность относится к Электрическим параметрам, соответственно ваше решение тоже работает, но оно допишет нужную строку и туда, куда дописывать не нужно.
Хотя вот сейчас проверяю первое решение (Kuzmich), там тоже есть этот момент, только чуть иначе. Вот это Find("Электрические параметры", LookIn:=xlFormulas, LookAt:=xlPart) по всей видимости не точный поиск, потому что мне добавились строки даже над ячейкой: Электрические параметры 2222
В первом столбце ищется строка "Электрические параметры" в диапазоне А3:А8, если в столбце справа строка "Мощность". то номер этой строки запоминается в массиве . После нахождения всех пар, происходит вставка пустой строки с заданным содержимым Параметры фильтрации и т.д.
Павел, спасибо и вам! >>Да, но если изменить xlPart на xlWhole, то будет сравниваться ячейка целиком Точно! Только если просто так поменять, то ничего работать не будет, так как ячейки скопированы с пробелами в конце, а в макросе - без пробелов, но это понятно как исправить.
sva пишет: Ну если ID уникален и нужная мощность всегда третья, то можно и так.
Спасибо, ID конечно уникален, вот только мощность не всегда такая, а иногда это даже не "Мощность", а "мощность(aes)", или вообще "НЧ-усилитель (aes)", тут вообще не попадешь, и сработает только для идеальных условий. Хотя в принципе в каждой ячейке напротив мощности есть некая цифра и приставка "вт", но только тут опять же может быть " 100Вт" или "100 вт" или "100вт/50вт на канал"..
Ну, можно отталкиватся и от слов "вт" в ячейке. У вас между двумя ID строк одинаковое количество и слово "вт" может у одного ID встречатся более 1 раза?
Теоретически нет - но на практике это зависит от того, каким местом думал человек, заполняющий эти файлы (это куски базы магазина), вообще тут скорее всего правильно было бы брать первое встретившееся значение ВТ для каждого ID, потому что обычно первыми идут именно самые важные значения. А что для этого использовать я уже даже догадываюсь, по аналогии с пхп - регулярные выражения!