Подсчитайте количество экземпляров цифры в диапазоне ячеек

Если у меня есть столбец и ячейки

579
39
357
3467
34579

Я хочу иметь возможность подсчитать, сколько раз встречается любая из цифр. Например, 3 встречается в этом диапазоне 4 раза.

Я пытался использовать функцию countif, но, кажется, это работает только в том случае, если в ячейке есть только 3.

Возможно ли это с помощью функции, или мне придется сделать обходной путь?


person Georgia    schedule 15.01.2016    source источник
comment
Попробуйте цикл с instr и увеличивайте счетчик каждый раз, когда instr › 0   -  person findwindow    schedule 15.01.2016
comment
Какую функцию Countif() вы пробовали? Я сомневаюсь, что это не сработает для того, что вы хотите получить.   -  person BruceWayne    schedule 15.01.2016
comment
Я собирался сказать, что Countif не может не сработать... но, похоже, вы правы! Я думал использовать =Countif(A1:A10,"*3*") в качестве теста, но вы не можете использовать подстановочные знаки с числами. Только что узнал это.   -  person BruceWayne    schedule 15.01.2016
comment
Бэтмен, сегодня я впервые использовал index/match ‹3   -  person findwindow    schedule 15.01.2016
comment
@findwindow - Сегодня первый день твоей оставшейся жизни. :D   -  person BruceWayne    schedule 15.01.2016


Ответы (1)


Попробуйте использовать Оценку приложения на собственном СУММПРОИЗВ.

application.evaluate("SUMPRODUCT(LEN(A2:A99)-LEN(SUBSTITUTE(A2:A99, 3, """")))")

Это будет подсчитывать несколько вхождений в одном значении; например 233453 содержат 3 вхождения 3.

Если бы я делал это, я бы уточнил родительский лист в этих адресах диапазона ячеек, чтобы избежать путаницы. Параметр external свойства Range.Address может помочь вам построить строку, которая будет вычисляться как формула.

person Community    schedule 15.01.2016
comment
буквально 2 секунды до публикации этого. :П - person Scott Craner; 15.01.2016
comment
Мне было три секунды с четвертью. Я пытался заставить Countif() работать, но это не так :/ - person BruceWayne; 15.01.2016
comment
Как насчет массовой загрузки массива вариантов и циклического перебора массива с Len и Replace ? - person ; 15.01.2016
comment
У меня в голове не укладывается evaluate ;_; - person findwindow; 15.01.2016
comment
@findwindow — вы вводите или объединяете строку, которая выглядит как формула на листе. Он может иметь = или нет; не имеет значения. Добавьте это в Application.Evaluate, и он просто вернет результат. как если бы вы положили его на рабочий лист. - person ; 15.01.2016
comment
Хм, да, я думаю, что меня достала струнная часть. Давно не играл с ним, забыл, почему я плакал в прошлый раз, когда пробовал XD - person findwindow; 15.01.2016
comment
Это довольно изящная формула. Я (по совпадению) сейчас работаю над электронной таблицей, где это прекрасно работает! Спасибо, Джип, как всегда. - person BruceWayne; 15.01.2016