9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
1 |
|
Поиск определённых букв в слове28.01.2020, 21:33. Показов 5998. Ответов 15
Добрый вечер, Уважаемые гуру и подгурятники! Формулой =ПОИСК({«а»;»о»;»е»;»ё»;»ы»;»у»;»и»;»я»;»э»};A1) пытаюсь создать массив, А мыслей что-то и нет.. А у вас?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
28.01.2020, 21:33 |
15 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
28.01.2020, 22:16 |
2 |
Заблуждаетесь формула возвращает массив из найденных позиций и ЗНАЧ!, если искомый символ не будет найден. Но для того, чтобы это узреть — нужно выделить девять ячеек в строке, ввести формулу и нажать клавиши CTRL+SHIFT+ENTER
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
28.01.2020, 22:50 [ТС] |
3 |
Заблуждаетесь формула возвращает массив из найденных позиций и ЗНАЧ!, если искомый символ не будет найден. Но для того, чтобы это узреть — нужно выделить девять ячеек в строке, ввести формулу и нажать клавиши CTRL+SHIFT+ENTER Да я так думал уже, но хотелось сделать всё безупречно кратко, чтобы глаз радовался. Но увы в Exel Благодарю, но вот только не понял для чего CTRL+SHIFT+ENTER нажимать? Просто ENTER не достаточно?
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
28.01.2020, 22:55 |
4 |
Не надо оверквотинга. Причём здесь краткость ? Если нужен массив, значит нужно иметь более одной ячейки, для вывода информации. Формулы массива вводятся с помощью этих волшебных клавиш.
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
28.01.2020, 23:06 |
5 |
хотелось сделать всё безупречно кратко Вы серьезно?
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
28.01.2020, 23:17 [ТС] |
6 |
Не надо оверквотинга. Ок, верно.
Если хотите вывести все числа, допустим, через запятую, то это уже будет не массив, а строка. Без запятой.
Если нужен массив, значит нужно иметь более одной ячейки Верно. Добавлено через 2 минуты
Формулы массива вводятся с помощью этих волшебных клавиш Можно пример, как ни как хотелось бы увидеть как это реализует профи Добавлено через 4 минуты
Вы серьезно? Нельзя да?
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
28.01.2020, 23:17 |
7 |
abu_chechen, Троллите ? Ваша формула это и есть формула массива.
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
28.01.2020, 23:21 [ТС] |
8 |
Ваша формула это и есть формула массива. Как то так, не то что ожидалось Миниатюры
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
28.01.2020, 23:28 |
9 |
нужно выделить девять ячеек в строке в строке Карл! не в столбце для столбца
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
28.01.2020, 23:33 [ТС] |
10 |
в строке Карл! не в столбце
Формула работает, но находит только первое вхождение найденного символа, А с этим как быть? Миниатюры
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
28.01.2020, 23:38 |
11 |
По моему кто-то хотел обойтись без ненужного цитирования А с этим, мой косяк. Недоглядел. Если по простому, то напишите макрос. А если не хотите заниматься этим самостоятельно, опубликуйте файл (.xls/.xlsx) где будет наглядно видно, что есть и что должно получиться в результате.
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
29.01.2020, 00:01 [ТС] |
12 |
опубликуйте файл (.xls/.xlsx) Верно. Залил без формул, чтобы было понятно, что должно получится в итоге
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
29.01.2020, 00:13 [ТС] |
13 |
Верно. Залил без формул, чтобы было понятно, что должно получится в итоге файл перезалил исправив упущения
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
29.01.2020, 00:46 |
14 |
Сообщение было отмечено abu_chechen как решение РешениеБез полёта фантазии и суммирования (ибо в файле нет ни намёка, что есть <Всего букв>, то ли это просто LEN(Ячейка), то ли уникальное количество символов в ячейке)
0 |
9 / 8 / 2 Регистрация: 08.12.2019 Сообщений: 102 |
|
29.01.2020, 07:51 [ТС] |
15 |
У меня ведь нет макроса. Отправкой документа макрос на котором он работает не передаётся Добавлено через 2 минуты
то ли уникальное количество символов в ячейке Да, количество символов в ячейке
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
29.01.2020, 13:56 |
16 |
Если Вы отправите мой файл, то передадите и макрос. А в файлах .xlsx макросы не живут, но есть .xlsm/.xlsb
0 |
You can populate numbers, names of months or weekdays easily by dragging your mouse. However, you can’t populate letters in the same fashion. In this guide, we’re going to show you how to populate Alphabet letters in Excel using three different methods.
Introduction
Let us first take a look at how character sets work in Excel. There are two built-in functions which are related to converting numbers into characters:
- CHAR Function
- CODE Function
We can use these functions to convert numbers and letters from one another to populate letters in Excel.
Simpler Method
Uppercase and lowercase letters in ASCII character set reside between the numbers 65-90 and 97-122, respectively. 65 = A, 66 = B, 90 = Z, 106 = j, etc. Using character conversion formulas like CHAR, we can convert this numbers to corresponding letters.
Syntax
Example
The challenge for this approach is generating numbers for the CHAR function. As explained in the previous section, you need numbers between 65 and 90 or 97 and 122 for letters. For this, you can use the SEQUENCE function at this step. The SEQUENCE function can generate an array of sequential numbers automatically.
All you need to do is to supply how many numbers you need, and which number to start with.
Syntax
SEQUENCE(rows,[columns],[start],[step])
Example
=SEQUENCE(26,1,65) returns an array of numbers between 65 and 90
The function above returns numbers into 26 rows and single column. If you want to generate numbers or letters like in our example, you can use a formula like =SEQUENCE(1,26,65).
Let’s combine both functions to create formula for populating letters of the alphabet.
Syntax
=CHAR(SEQUENCE(26,1,<number where letters start>))
Example
Uppercase letters: =CHAR(SEQUENCE(26,1,65))Lowercase letters: =CHAR(SEQUENCE(26,1,97))
Using the CODE function for populating letters of the alphabet
Excel’s has the CODE function works in opposite way of the CHAR. The CODE function simply returns the corresponding number of the given character in a character set.
Syntax
Example
As a result, the CODE function with the character can be replaced with the number itself. The following is an example for using this formula.
Syntax
=CHAR(SEQUENCE(CODE(<last character>)-CODE(<first character> )+1,1,CODE(<first character>)))
Example
=CHAR(SEQUENCE(CODE(«Z»)-CODE(«A»)+1,1,CODE(«A»)))
Dynamic character interval
Using the CODE function, we can improve the model by following a more dynamic approach. We can replace the hard coded letters like “A” or “Z” with cell references containing these characters. This approach allows us to change the start and end characters of alphabet letters without updating the formula.
Syntax
=CHAR(SEQUENCE(CODE(<the cell contains the last character>)-CODE(<the cell contains the first character> )+1,1,CODE(<the cell contains the first character>)))
Example
=CHAR(SEQUENCE(CODE(I7)-CODE(I6)+1,1,CODE(I6)))
Using LET function to populate Alphabet letters
This is an optional step for populating alphabet letters in Excel. The relatively new LET function allows you to create named ranges inside the context of its own formula.
The syntax of the LET function contains the actual formula which using determined name-value pairs.
Syntax of the LET function
LET(name1, name_value1, [name2], [name_value2], …, calculation)
Syntax of our model with the LET function
=LET(Start,CODE(<the cell contains the first character>),Finish,CODE(<the cell contains the last character>),CHAR(SEQUENCE(Start-Finish+1,1,Finish)))
Example
=LET(Start,CODE(M7),Finish,CODE(M6),CHAR(SEQUENCE(Start-Finish+1,1,Finish)))
We defined named ranges for Start and Finish as CODE(M7) and CODE(M6) respectively. Each name is replaced with the corresponding CODE function block.
- Обычной функцией
- Как протянуть алфавит формулой
- Создать алфавит в Excel формулами массива
- Способ №1
- Способ №2
- Применение функций создания алфавита в других задачах в Excel
Часто возникает задача быстро вывести все буквы алфавита и разместить их на разных строках или в разных столбцах по порядку. A, B, C… или А, Б, В… в зависимости от нужного алфавита.
Получить список чисел какой угодно длины очень просто. И всем известно, что есть даже несколько способов:
- Заполнением двух ячеек вручную и протягиванием курсором
- Опцией “Автозаполнение”
- Формулой, ссылающейся на предыдущую ячейку с нужным шагом (например, A1+1)
В случае с буквами алфавита автозаполнение не работает. Протянуть алфавит без формулы тоже не получится.
Но можно создать алфавит функциями, и есть даже несколько вариантов.
Обычной функцией
Наиболее простой вариант решить задачу – функция СИМВОЛ.
Она возвращает по коду ANSI знак, который ему соответствует.
Для английских заглавных букв это диапазон с 65 по 90. Остается только создать столбец таких чисел и обратиться к нему этой функцией. Сделаем диапазон чисел протягиванием, введем функцию с относительной адресацией один раз и тоже протянем ее вдоль чисел:
Буквы кириллицы можно создать аналогичным способом, разница только в диапазоне чисел. Для русского алфавита зарезервированы числа от 192 до 255. Подробнее можно почитать в статье про функцию СИМВОЛ в Excel.
Как протянуть алфавит формулой
Можно ли без создания столбца прибавить к букве число и получить следующую? Да, такая формула тоже возможна.
Чтобы получить одну букву из другой математически (вычитанием для предыдущей и сложением для следующей), поможет комбинация функций СИМВОЛ и КОДСИМВ. КОДСИМВ производит обратную операцию — возвращает код символа из самого символа.
А вот текстовое представление формулы:
=СИМВОЛ(КОДСИМВ(A1)+1) =СИМВОЛ(КОДСИМВ(A1)-1)
Как видно из примера выше, для создания алфавита потребовался отдельный столбец чисел.
А можно ли обойтись без необходимости создания такого диапазона на листе? Да, можно, именно в этом кроется прелесть формул массива. Они могут создать промежуточные массивы значений для вычислений.
Еще одно их преимущество – достаточно ввести формулу 1 раз, предварительно выделив область, в которую будет выведен массив, и он будет заполнен разом и полностью.
Важно: фигурные скобки в формулах массива не нужно вводить с клавиатуры, они появляются автоматически при вводе функций сочетанием клавиш Ctrl+Shift+Enter.
Способ №1
Чтобы создать массив чисел, воспользуемся функцией СТРОКА, которая будет обращаться к диапазону строк с нужными нам адресами и возвращать массив чисел, который будет брать на вход уже функция СИМВОЛ.
Такая формула массива потребуется, чтобы создать диапазон из 26 английских букв:
{=СИМВОЛ(СТРОКА(A65:A90))}
Если диапазон создается надолго и есть вероятность, что реальный диапазон A65:A90 может быть иначе сортирован или в него будут вставлены строки, такой способ не надежен.
Более надежно будет создать его функцией ДВССЫЛ:
{=СИМВОЛ(СТРОКА(ДВССЫЛ("65:90")))}
Аналогичные формулы для создания русского алфавита:
{=СИМВОЛ(СТРОКА(A192:A223))} {=СИМВОЛ(СТРОКА(ДВССЫЛ("192:223")))}
Обратите внимание, буква Ё не входит в сплошной диапазон символов таблицы ANSI. Её придется ввести позже самостоятельно.
Способ №2
Еще один способ получить символы английского алфавита – получить их из адресов ячеек первых 26 столбцов.
Помогут в этом функция АДРЕС, которая выведет адреса ячеек текстом по их координатам, и функция ЛЕВСИМВ, которая извлечет из них первую букву.
Если нужно получить буквы в горизонтальном порядке, формула будет такой:
{=ЛЕВСИМВ(АДРЕС(1;СТОЛБЕЦ(A1:Z1);4;1);1)}
А так будет выглядеть процесс, если скопировать формулу выше в буфер без фигурных скобок и применить как формулу массива сочетанием клавиш:
А если нужно в вертикальном, формула выше обрабатывается дополнительно функцией ТРАНСП:
{=ТРАНСП(ЛЕВСИМВ(АДРЕС(1;СТОЛБЕЦ(A1:Z1);4;1);1))}
Процесс создания аналогичен изображенному выше. Отличие в том, что перед вводом функции массива нужно выделить вертикальный, а не горизонтальный, диапазон из 26 ячеек.
Применение функций создания алфавита в других задачах в Excel
Функции массива могут пригодиться не только для банального создания списка букв алфавита. Сами эти буквы могут быть нужны в других задачах. Примеры таких – по ссылкам ниже:
Найти английские буквы в русском тексте
Найти первую букву в ячейке
Следующая статья по формулам массива:
Учимся формулам массива – 2/4
Подсчет количества символов в диапазоне Excel
Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
!SEMTools поможет решить их быстро и легко!
например «Р» должна считаться как «12» а остаться «Р» |
|
и чтобы такие ячейки складывать можно было. |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
=СЧЁТЕСЛИ(A1:A10;»Р») |
Огромное СЫПАСЫБО!!!!!!!!!!!!!!!!!!!!!! 6 день сиже ломаю голову. |
|
А как теперьче сделать так что бы =СЧЁТЗ(C9:AG9) считало без учета =СЧЁТЕСЛИ(C9:AG9;»О»)*1 |
|
а если в этой строке будут буквы «Р» со значением «12» и допустим «П» со значением «8»как это прописать? |
|
Казанский Пользователь Сообщений: 8839 |
#8 09.08.2012 22:06:06 Для 2-3 букв можно форматом ячейки сделать: Прикрепленные файлы
|
Часто требуется получить из строки только буквы, исключив цифры и различные знаки, символы.
В настоящее время такой встроенной функции нет, поэтому придется писать пользовательскую функцию на VBA
Вот небольшой код для пользовательской функции Excel, которая может вытаскивать из строки состоящей из цифр, букв и символов только буквы.
Public Function GetText(txt As String) As String Dim m As String, s As String For i = 1 To Len(txt) m = Mid(txt, i, 1) If m Like "[A-Za-zА-Яа-яЁё]" Then s = s & m Next i GetText = s End Function
Как пользоваться?
Открываем редактор VBA в Excel (Alt+F11), или правой кнопкой по листу и выбираем пункт «Исходный текст».
Создаем новый модуль → Insert → Module
Переключаемся на российскую раскладку клавиатуры, копируем код, указанный выше и вставляем в модуль
Далее в нужной ячейке, где необходимо вывести только буквы, прописываем формулу:
=GetText(A1)
и протягиваем ее вниз