Подсчёт по части текста

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

maxa
Сообщения: 59
Зарегистрирован: 15 июн 2006, 21:00

Как организовать подсчёт, например, по слову "Урал" в виде ссылки,
встречающемуся в части текста ячеек искомого диапозона.
=СЧЁТЕСЛИ(диапозон;?)

Образец задачки в сжатом файле
Вложения
Файл.zip
(2.52 КБ) 37 скачиваний
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Проблему решает массивная формула в ячейке D3 (которую можно размножить до G3).
{=СУММ(ЕСЛИ(ЕОШИБКА(ПОИСК(D$2&"*";$A2:$A45;1));0;1))}
Помните, что массивная формула вводится по Ctrl+Shift+Enter без фигурных скобок.
Разумеется возможны и другие варианты.
Если нужно различать прописные и строчные буквы - используйте вместо функции ПОИСК функцию НАЙТИ.
P.S. Слово диапазон (range) пишется через "а" :)
Андрей Энтелис,
aentelis.livejournal.com
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Поиграл с макрорекордером, один из шаблонов конечно сырых для реализации данной проблемы
С уважением...
Вложения
Файл.zip
(15.14 КБ) 35 скачиваний
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

можно сделать и так, с
=СЧЁТЕСЛИ(диапозон;?)
посмотрите вложенный файл
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

ВикторМ здорово. Раскажите как ещё можно применять "*"
Также на VBA можно отсортировать по конкретным маркам, или выбрать кусок текста по определённому операунду в VBA
Вложения
Файл.zip
(17.46 КБ) 31 скачивание
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

seergy,
Раскажите как ещё можно применять "*"
да в данном случае ничего особенного, здесь символ "*" просто обозначает - "дальше , что угодно" :)
seergy
В коде VBA уже пора начинать обращать внимание на Select-ы и по мере возможности - избавляться. Да и весь остальной код можно значительно сократить. Макрорекордер пишет излишне болшой код, особенно при форматировании и установке параметров страницы.
Например весь код Borders (кроме рамки) можно сократить до вот такого:

Код: Выделить всё

With Selection.Borders
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
End With
точно так же с рамкой
ну и так далее... удачи! :rolleyes:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

если уж
отсортировать по конкретным маркам
то проще наверное так, сводной таблицей
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Буду знать я VBA только два 3-4 месяца занимаюсь....
К тому же не программист
С увжением...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

К тому же не программист
да я вроде тоже :)
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
maxa
Сообщения: 59
Зарегистрирован: 15 июн 2006, 21:00

VictorM писал(а):да я вроде тоже :)


Я тем более.
Теперь задача усложняется. Пытался сам решить, но не получается. Необходимо подсчитать количество совпадений по строке по двум параметрам. Причем искомый параметр должен быть обязательно частью текста в виде ссылки. Это нужно для применения решения в других таблицах. Использовал
=СУММПРОИЗВ((ЕСЛИ(ЕОШИБКА(ПОИСК(F$2&"*";$B$2:$B$62;1));0;1))*(ЕСЛИ(ЕОШИБКА(ПОИСК("*"&E3&"*";$A$2:$A$62;1));0;1)))

Выходит совсем не ясное
Вложения
Файл2.zip
(5.94 КБ) 34 скачивания
Ответить