![]() #фанфикс_образовательный #фанфикс_знает_все #проблемы_белого_человека
Знатоки Exel, отзовитесь)) Вот у меня есть два листа с данными, мне нужно вставить на лист 1 данные из ячейки на листе 2 с наименьшим количеством кликов. Это можно сделать элементарно путем ссылки на ячейку на листе 2: =' Лист2 '!A9 - допустим Но есть одна проблема, если лист 2 в дальнейшем подвергается обработке, например, появляются новые строчки, потом я отсортирую все по алфавиту, и какая-нибудь "фиговина1" в ячейке А9 уедет в ячейку А14, а в ячейке А9 появится "фиговина2"... и в листе 1 наступит хаос и мордор. Надеюсь, я понятно объяснила. Есть ли какой-то элегантный способ решить эту проблему? Или единственный доступный выход, это унылый копипаст "фиговины1" с одного листа на другой? Гугл меня не понял))) 20 декабря 2020
|
![]() |
|
Вообще, ситуация по описанию напоминает вариант, когда пора переходить на SQL и БД.
;-) 1 |
![]() |
|
В Exel помогает функция ВПР. Правда объяснять сложно. Но попробуем.
Показать полностью
Синтаксис: = ВПР (ключ для поиска; таблица поиска;колонка для извлечения;признак) Как она работает? Допустим, у нас есть таблица - какой клиент сколько принес денег и за что. Столбцы - Фамилия, сумма, услуга Например: Деленн | 1650 | пересадка волос Моллари| 50 | стрижка Леньер| 17| полировка лысины Кош| 90 | протирка скафандра Для простоты объяснения таблица лежит в ячейках А1:С4 на Листе 1. Символами | я отделил ячейки друг от друга. Задача: в отдельную таблицу (пусть и на другом листе) нам надо выдернуть данные по Леньеру и Деленн. Функция =ВПР ('Леньер';Лист1!$А$1:$С$4;3;ЛОЖЬ) выдаст нам результат "полировка лысины". Как именно? 1. Функция ищет ключ "Леньер" в крайней слева колонке таблицы что мы указали в функции ВПР - А1:С4 на Листе 1. 2. Функция берет ту строку, где есть первое точное совпадение (так как признак = ЛОЖЬ). Это будет строка "Леньер| 17| полировка лысины" 3. Из данной строки ВПР выдернет значение третьей ячейки слева (3 - ибо цифру 3 мы поставили в ВПР. Первая ячейка- Леньер, вторая - 17, третья - полировка лысины). Это и есть результат. Соответственно, на листе 2 формируем следующую таблицу (расположена в ячейках А1:В2): A | B Леньер | =ВПР (A1;Лист1!$А$1:$С$4;3;ЛОЖЬ) Деленн | Вместо слова "Леньер" указание на ячейку с этим словом. Протаскиваем формулу вниз и получим следующую таблицу: A | B Леньер | =ВПР (A1;Лист1!$А$1:$С$4;3;ЛОЖЬ) Деленн | =ВПР (A2;Лист1!$А$1:$С$4;3;ЛОЖЬ) Символы $ стоят для того, чтобы при протаскивании функции вниз адресация таблицы не сдвинулась. Или, если брать значения: A | B Леньер | полировка лысины Деленн | пересадка волос А что теперь будет если в исходной таблице отсортировать строки, например, по стоимости? Главное сделать это правильно, чтобы отсортировалась не только колонка В, но и вместе с ней сдвинулись остальные колонки. То есть получить примерно это: Леньер| 17| полировка лысины Моллари| 50 | стрижка Кош| 90 | протирка скафандра Деленн | 1650 | пересадка волос Функция ВПР по-прежнему будет искать в таблице Лист1!$А$1:$С$4 первую сверху строчку, где в крайней левой колонке есть слово "Леньер". По-прежнему найдет строку "Леньер| 17| полировка лысины", которая, правда, здесь находится в ином месте. По-прежнему выдернет нужное - третье слева значение. Тоже самое для Деленн. Результат достигнут! Нюансы: 1. Ключ (то, по чему ищут, в примере - слово Леньер) - должен быть уникален, не должен повторяться. Можно в качестве ключа использовать цифры. 2. Если мы заменим в исходной таблице данные, то они изменятся и в новой. Поменяем Леньера на Дукхата - и ВПР не найдет Леньера в таблице и выдаст ошибку. Заменим "полировка лысины" на "замазывание синяков" - и ВПР выдаст "замазывание синяков" 3. Надо быть осторожным с добавлением и удалением строк в таблице с исходными данными. Если мы просто допишем строку снизу, то ВПР её не увидит - у нас-то зафиксированы строки с 1 по 4, и что там на 5й, 6й... функции неинтересно. Надо либо менять адрес таблицы в функции и снова протаскивать её (что не сложно), либо добавлять строку посередине с помощью функции "вставить строки"... и проверять, что будет. Exel должен сам изменить адрес в функции. 1 |
![]() |
|
МТА
спасибо большое за разбор))) Деленн | 1650 | пересадка волос Я валяюся))) классные примерыМоллари| 50 | стрижка Леньер| 17| полировка лысины Кош| 90 | протирка скафандра |