Емае
Пикабу
Случайно узнал о пикабу, так понравилось это место, приятные люди (токсики в коммах которые есть всегда тоже), нравится что всегда комментарий оставят, обратный отклик будет. Не нравятся правда люди, которые просто тупой мем постят, но думаю настроятся рекомендации и пропадут со своими новостями и мемами, в первую очередь я вижу здесь ламповое место, а не СМИ.
А теперь вопрос к старичкам, а каким раньше было приложение? Трава была зеленее и люди были добрее? Расскажите про интересный опыт который здесь получили.
Всё как и у всех2
Кому удобно есть телега со всяким про Англию: https://t.me/emigrantsUK
Волшебный метод Match
В VBA Excel есть недодокументированный, но очень мощный и полезный метод Application.Match(). Есть метод-близнец WorksheetFunction.Match(). Работают они похожим образом, но возвращают разные результаты.
В VBA-коде лучше использовать именно Application.Match().
С помощью этого метода можно:
искать элементы (один или сразу несколько) в одномерных диапазонах и массивах;
сравнивать массивы и диапазоны на предмет наличия одинаковых элементов;
осуществлять точный и неточный поиск.
Скорость работы Application.Match() значительно выше, чем у циклов, перебирающих элементы массивов или, тем более, ячейки листов Excel.
Отдельно необходимо отметить, что метод этот довольно известный, но, как правило, не используемый на полную мощность. Так, многим неизвестно - и в официальной справке этого нет - что можно искать не одно значение, а массив значений. Также многие продолжают использовать неудобный вариант WorksheetFunction.Match() вместо удобного Application.Match().
С помощью Application.Match() можно, например, организовать, эффективный поиск множества подразделов на листе за одну операцию при обработке таблиц. Это позволяет сильно экономить по времени поиска и по количеству строчек кода. Также довольно просто можно применить этот метод для операций пересечения и сравнения множеств.
Синтаксис:
Application.Match(<что ищем>, <где ищем>, <как ищем>)
<Что ищем> может быть:
одно значение - переменная или константа, например «aaa», 123 или ValueToFind, причем различных типов - строка, число, дата, логическое.
текстовые значения могут содержать подстановочные знаки * (0+ любых символов),? (один любой символ). Их можно экранировать тильдой ~, если нужно найти именно * или ?
одномерный массив Array(«aaa», 123)
диапазон листа Excel (строка или столбец) Range("A1:A10"), Range("A1:F1")
<Где ищем> может быть:
одномерный массив, содержащий значения различных типов, например, Array(«aaa», 123)
диапазон листа Excel (строка или столбец) Range("A1:A10"), Range("A1:F1")
<Как ищем>:
0 - точно. Массив <Где ищем> может быть неупорядоченным (неотсортированным)
-1 - поиск наименьшего значения. Массив <Где ищем> должен быть отсортирован по убыванию
1 - поиск наибольшего значения. Массив <Где ищем> должен быть отсортирован по возрастанию
Application.Match() возвращает:
если <что ищем> – одно значение, то возвращается одно значение типа Double (индекс найденного значения в массиве, начиная с 1) или значение типа Error (если значение не найдено);
если <что ищем> – массив из N элементов, то возвращается массив, содержащий N значений типа Double (индекс найденного значения в массиве, начиная с 1) или значений типа Error (если значение не найдено).
Особенности:
если значение не найдено, возвращается значение ошибки #N/A [Error 2042] (метод WorksheetFunction.Match() в этом случае генерирует исключение)
поиск текста производится всегда регистронезависимо, т.е. прописные и строчные буквы А и а считаются одинаковыми, и не зависит от установки Option Compare { Binary | Text }
при успешном поиске Application.Match() возвращает для каждого искомого значения только первый индекс найденного элемента в <где ищем>. Т.е. если <что ищем> = 2,2 а в <где ищем> находится 2,1,2,2, то результатом будет массив 1,1 - обе двойки найдется в первом индексе.
Индексы нумеруются с 1 независимо от установки Option Base { 0 | 1 }.
Примеры применения Application.Match()
1. Ищем несколько текстов, в т.ч. по маске, в массиве:
Данный код ищет строки «qqq» (три q или Q подряд) и «a?b» (строка из трех символов, начинающаяся на a или A, заканчивающаяся на b или B с любым символом посередине) в массиве arr, содержащем строки «AAA», «A5A», «Abb».
В результате работы кода в окне Immediate будет напечатано:
Error 2042
3
Этот результат означает, что строка "qqq" не найдена в массиве arr, а "a?b" соответствует третьему элементу "Abb".
2. Ищем значения из столбца A в столбце C:
Этот код ищет значения из ячеек колонки A листа Excel в колонке C листа Excel. Результат выводится в цикле с предварительной проверкой, найден ли очередной элемент или нет. Эта проверка производится с помощью функции IsNumeric(), которая возвращает Истину в том случае, если аргумент - число. В том случае, если значение не найдено, в результирующем массиве будет находиться значение ошибки (Error), и IsNumeric() вернет Ложь. Также это можно проверить с помощью функции IsError(), которая возвращает Истину, если аргумент является значением ошибки.
Element 1 is found at index 9
Element 8888 not found (Error 2042)
Element 3 not found (Error 2042)
Element 4 not found (Error 2042)
Element 5 is found at index 4
Element 6 not found (Error 2042)
Element 7 is found at index 10
Element aaa is found at index 6
Element 9 not found (Error 2042)
Element 06.09.2022 is found at index 8
Уступи место
Несколько лет назад, у меня был период, когда очень болели ноги, было трудновато ходить, особенно подниматься по ступенькам, мог даже упасть (с мышцами что-то).
Я на время одолжил у знакомых трость, ну, обычная, как у пенсионеров. Очень помогала, кстати.
Отношение на улице в большинстве случаев было положительным, ощутил, как чувствуют себя пенсионеры или инвалиды: автобус часто ждал, когда я сяду, перед тем, как поехать, уступали место (хотя обычно, если не было свободных мест, я не садился и ждал другой автобус).
Но встречались разные индивиды:
Подходит бабулька, просит требует уступить место. А чё, я моложе 40ка, гипса нет, костылей нет. А палочка, мож я понтуюсь. Я демонстративно вставал с палочкой, наигранно даже, другие пассажиры стали косо на неё смотреть. Мне другие предлагают своё место, я отказываюсь и стою весь маршрут возле неё. (я мог стоять, но предпочитал сидеть в то время)
Например очередь в магазине: продавщица подзывает меня, мол иди вне очереди, обслужу. Голос из толпы: "это почему это? Потому что у него трость?" - Вся очередь хором и громко "ДА!")
А еще были такие, которые начинали причитать: "ой, какой бедненький, такой молодой, а уже с тростью ходит" прям при мне. Нахуй их слал, т.к. очень неприятно. Это как прыщ на лице и все это обсуждают.