Сообщество - MS, Libreoffice & Google docs

MS, Libreoffice & Google docs

762 поста 14 932 подписчика

Популярные теги в сообществе:

168

Ответ на пост «Функция ВПР в Excel»1

Отличный гайд, но есть неточности.

- ИСТИНА - поиск приблизительного соответствия.

Это, строго говоря, неправда. Хоть то же самое написано на сайте office.microsoft.com, но это всё равно неправда.


Значение "ИСТИНА" параметра "Тип поиска" означает, что ВПР выполнит бинарный поиск и вернёт то, что найдёт. Если массив отсортирован по возрастанию, то это действительно будет ближайшее "снизу" значение (например, для числа 123 это будет число 122, а для текста "абв" это будет "абб", при условии, конечно, что эти значения есть в массиве поиска). Если же массив не отсортирован или отсортирован не по возрастанию - алгоритм бинарного поиска либо вернёт ошибку "#Н/Д", либо всё-таки что-то найдёт. Скорее всего, совсем не то, что вы искали (даже если искомое значение есть в массиве!). Дело в том, что, во-первых, ВПР не проверяет, отсортирован массив или нет, а во-вторых, он не проверят действительно ли найденное алгоритмом бинарного поиска значение совпадает с тем, что искалось.


Функция ВПР выдаёт ошибку #Н/Д если:
...
2. Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск, не отсортирована по возрастанию наименований.

Это тоже неправда. Как я писал выше, ВПР может что-то найти даже в несортированном массиве.


Зачем вообще нужен алгоритм бинарного поиска в ВПР?


Дело в том, что бинарный поиск работает намного, намного быстрее, чем "обычный" (O(log n) против O(n)). Особенно эта разница будет заметна на больших массивах данных. Но пользоваться им надо с осторожностью. Чтобы отсечь неправильно найденные значения (по причине проблем с сортировкой или из-за отсутствия искомого значения в массиве), можно воспользоваться приёмом под названием "двойной ВПР":


=ЕСЛИ(
ВПР(Искомое_значение; Первый_столбец_таблицы; 1; ИСТИНА) = Искомое_значение;  ВПР(Искомое_значение; Таблица_где_ищем; Номер_столбца_результатов; ИСТИНА);
НД()
)

Т.е. сначала мы проверяем, что ВПР находит то, что нужно, а только затем возвращаем найденное. Скорость работы больше обычного ВПР в 10-100 (sic!) раз. Такой разброс скорее всего связан с тем, насколько хорошо у Excel получается оптимизировать ваш "обычный" поиск.

Показать полностью
39

VBA Excel - выбор документа для обработки

Несколько раз была задача, когда изменения надо вносить не в текущий документ, а в документ с неизвестным именем. В результате получилась вот такая форма:

В listbox выводится список открытых документов или можно открыть файл через стандартный диалог открытия.

К сожалению, эксель не экспортирует формы в текстовом виде (во всяком случае, 2007 точно нет), поэтому будут скрины контролов и их свойств.

Как вы видите, я не заморачивался с названиями.

Код:

Public SrcName

Private Sub CommandButton1_Click()

SrcName= ""

If ListBox1.ListIndex >= 0 Then

SrcName= ListBox1.List(ListBox1.ListIndex)

UserForm1.Hide

End If

End Sub

Private Sub CommandButton2_Click()

SrcName= ""

UserForm1.Hide

End Sub

Private Sub OpnButton_Click()

iOpen = Application.Dialogs(xlDialogOpen).Show

If iOpen = True Then

SrcName= ActiveWorkbook.Name

UserForm1.Hide

Else

MsgBox "отмена", vbCritical, ""

Exit Sub

End If

End Sub

Private Sub UserForm_Activate()

SrcName= ""

ListBox1.Clear

NoShow = ThisWorkbook.Windows(1).Caption

For i = 1 To Application.Windows.Count

If Application.Windows(i).Caption <> NoShow Then ListBox1.AddItem (Application.Windows(i).Caption)

Next ' enum windows

End Sub

Пикабу сожрал все отступы, это не я!

Пример использования:

Dim SrcWB As Worksheet
UserForm1.Show
If UserForm1.SrcName= "" Then Exit Sub
Windows(UserForm1.SrcName).Activate
Set SrcWB = ActiveWorkbook

P.S. Баянометр считает, что эксель на 41% похож на клубничку. Мне кажется, что он недалёк от истины.

Показать полностью 5
1633

Функция ВПР в Excel1

Многим знакома функция ВПР в Excel, которая ищет заданное значение в столбце указанной таблицы, и если находит, то выдаёт значение из требуемого столбца той же строки, где было совпадение.

=ВПР(Искомое_значение; Таблица_где_ищем; Номер_столбца_результатов; Тип_поиска)

Тема ВПР достаточно объёмная и интересная. Знание ВПР превращает обычного пользователя Excel в продвинутого)). Не сомневаюсь, что в сообществе имеется много знатоков этой функции, которые каждый день используют её на работе, думаю новичкам было бы интересно узнать о способах применения ВПР на практике.

Итак, начнём повышать уровень знаний в период самоизоляции))


Допустим, у нас имеются две таблицы – Заказы и прайс-лист:

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


Примеры использования ВПР:

- подставить из штатного расписания данные о сотруднике (адрес, оклад, телефон) по его ФИО;

- подставить из каталога продукции подробную информацию о товаре по его артикулу;

- подставить из реестра договоров по номеру договора все подробности его заключения (с кем заключен, реквизиты, сумму и т.д.);

- и так далее.


Выделяем первую ячейку (D3), куда будем вводить функцию ВПР, на вкладке «Формулы» нажимаем «Вставить функцию». В категории «Ссылки и массивы» (Lookup and Reference) находим ВПР (VLOOKUP) и жмём ОК

Появится окно ввода аргументов для функции:

Заполняем поля по очереди:

- Искомое значение – наименование товара, которое функция должна найти в крайнем левом столбце прайс-листа (слово «Вода» из ячейки B3).

- Таблица – таблица, из которой берутся искомые значения, т.е. наш прайс-лист. Чтобы при копировании функции вниз на весь столбец ссылка на прайс не сбилась, ее нужно сделать абсолютной, нажав клавишу F4.

- Номер_столбца – порядковый номер (не буква!) столбца в прайс-листе, из которого берём значения цены. Первый столбец прайс-листа с названиями имеет номер 1, следовательно, нам нужна цена из столбца с номером 2.

- Интервальный_просмотр – ЛОЖЬ (0) или ИСТИНА (1):

- ЛОЖЬ КЛАДИ - поиск точного соответствия. Если товар отсутствует в прайс-листе или написан с ошибкой, то функция выдаст ошибку #Н/Д.

- ИСТИНА - поиск приблизительного соответствия. Функция попытается найти товар с максимально похожим наименованием и выдаст цену для этого товара.

Делать это не рекомендуется т.к. функция может подставить значения цены не того предмета, которая должна быть.

После ввода всех аргументов нажимаем ОК и протягиваем введенную функцию на весь столбец.


Функция ВПР выдаёт ошибку #Н/Д если:

1. Включен точный поиск (Интервальный просмотр=0) и искомого наименования нет в Таблице.

2. Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск, не отсортирована по возрастанию наименований.

3. Форматы ячеек первого столбца и образцовой таблицы отличаются (числовой и текстовый). Можно использовать функции Ч и ТЕКСТ для преобразования форматов данных.

4. Функция не может найти нужного значения, потому что в коде есть пробелы или невидимые непечатаемые знаки (перенос строки и т.п.). В этом случае можно использовать текстовые функции СЖПРОБЕЛЫ и ПЕЧСИМВ для их удаления:

=ВПР(СЖПРОБЕЛЫ(ПЕЧСИМВ(B3));$G$3:$H$19;0)

=VLOOKUP(TRIM(CLEAN(B3));$G$3:$H$19;0)

Для подавления сообщения об ошибке #Н/Д в тех случаях, когда функция не может найти точного соответствия, можно воспользоваться функцией ЕСЛИОШИБКА (IFERROR). В результате любые ошибки, создаваемые ВПР, заменятся на нули или пустые строки:

Итого получаем, 5 минут на заполнение формулы и куча сэкономленного времени и нервов, в которое имитируем бурную деятельность и читаем Пикабу)) Всем здоровья, берегите себя!

Дополнение к посту: #comment_166519497

Показать полностью 4
654

Excellama: Поиск решения или быстрый подбор нужных параметров

Всем добрый день! Сегодня моему молодому человеку потребовалось решить задачу по подбору длины кабелей. Я ее решила с помощью встроенного инструмента в Excel, которым раньше пользовалась для подгона любых параметров :) Может и Вам это будет интересно.

Дано: n-ое кол-во кабелей разной длины и общая длина кабельного пути, в которую надо уложиться (160 метров).

Задача: рассчитать необходимое кол-во кабелей.


Решение:

1. У меня программа 2007г, но этот инструмент есть в любом порядочном Excel, просто он прячется и нам надо его достать.

Заходим в Файл – Параметры – Надстройки – Управление Надстройки Excel - Перейти

В появившемся окне щелкаем на поле «Поиск решения» и нажимаем ОК. Готово!

Выбранный инструмент появился на вкладке Данные, группа Анализ.

2. Нажимаем на инструмент «Поиск решения» и в появившемся окне заполняем необходимые параметры для подбора значений.

Расшифровка:

Целевая ячейка $D$8 – ячейка, которая суммирует итоги.


Значение 160 – наше целевое значение, под которое надо подогнать длины кабелей.


Изменяя ячейки $C$3:$C$7 - тут диапазон ячеек, значения которых необходимо подбирать, чтобы выйти на заданное целевое значение (кол-во кабелей разной длины).


Ограничение $C$3:$C$7 = целое – это означает, что подобранное кол-во кабелей должно быть целым числом, а не дробным.


Ограничение $C$3:$C$7 >=0 – это означает, что подобранное кол-во кабелей должно быть больше нуля. Иногда инструмент «поиск решения» может находить отрицательные величины и считать, что он со своей задачей справился на 120%.


3. Нажимаем кнопку «Выполнить». Программа начинает подбирать варианты и иногда этот поиск может затянуться на некоторое время (в зависимости от написанных ограничений, диапазона данных, сложности задачи).

Спустя 0,5 мин. я получила такой результат.

Отмечу, что сам поиск решения не всегда срабатывает идеально и иногда он очень долго ищет то самое решение. В этом примере на одном компьютере все сработало идеально, а на другом он посчитал кол-во 2,000002. Погрешности в нем, все же, существуют.


Так же отмечу, что применять его можно не только в таких простых примерах. Можно поставить больше ограничений, можно в целевой ячейке прописать большую формулу с условиями и т.д. Возможности безграничны!


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


Так же если у Вас возникнут трудности с применением данного инструмента – готова пообщаться и подсказать :)


P.S.: Я пользователь новый, поэтому только начала въезжать в то, как тут писать посты. Внизу в графе "возможные дубликаты" появился совсем не дубликат, а скриншот переписки. К моему посту это отношения никакого не имеет. Писала сама, пруфы есть))

Показать полностью 5

Нужна помощь в Word'e. Поиск и замена

Привет, карантинщики)

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

Помогите с долями в excel

Сумма = 600 000 фунтов (Сумма может меняться. Например, общая сумма 1 000 000, от нее вычтем на расходы 400 000, осталось 600 000 на распределение). 1 фунт = 20 шиллингам, 1 шиллинг = 12 пенсам.


1 капитан получает от общей суммы 2 доли, 15 старших членов экипажа по 1,5 доли, 30 младших членов экипажа по 1,25 доли.


Как все в долях распределить (Как составить табличку в excel)?

10

Настройка строки состояния ms word

Доброго времени суток!

Нужна маленькая помощь.

Мама на пенсии занялась копирайтингом, рерайтингом или как там всё это называется, поэтому пишет много текста.

Попросила меня сделать так, чтобы в строке состояния в ворде автоматически подсчитывалось количеством символов. Там простыми средствами можно поставить подсчет количества символом с пробелами, а она просит без пробелов.

Чтобы не нажимать каждый раз на кнопку "статистика", а сразу видеть, когда пишешь.

Третий день ищу решение и никак. Сам в этом не очень разбираюсь.

Показать полностью 3
17

Вопрос к спецам по Excel

Имеется массив цифровых значений (порядка 10000 позиций) - столбец А. Как в столбец В вывести пропущенные (отсутствующие по порядку нумерации) значения из столбца А (данные на картинке внесены вручную).

Вопрос к спецам по Excel
Отличная работа, все прочитано!