Страницы: 1
RSS
Подсчет количества различающихся символов, Формулой или иным способом
 
Здравствуйте.
Как можно подсчитать количество различающихся символов в ячейке(ах) ?
Изменено: ALARMus - 10.06.2025 10:26:29
 
Краткость явно не сестра Ваших талантов :)
Различаются относительно чего? Других символов в этой же ячейке? Или в другой? Или в эталонном списке? Или нужно просто кол-во уникальных символов? Это все разные задачи, которые по сути подходят под описанную Вами. Поэтому нужна конкретика и желательно с примером в файле Excel.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Она сестра без применительности к конкретной личности  ;)

Я задавая вопрос полагал, что этой информации вполне достаточно.
Речь о количестве уникальных символов !

А Ваши варианты даже не представляю, что они такое (видимо как и Вы мой вариант)
 
Файл-пример (Excel) приложите. Как есть - Как надо
А пока
Можно ли подсчитать количество уникальных символов в ячейке?
Согласие есть продукт при полном непротивлении сторон
 
ALARMus, сложно приложить файл примера (эксель)? и не мешало бы версию экселя озвучить
2021+:
=СЧЁТЗ(УНИК(ПСТР(A1;ПОСЛЕД(ДЛСТР(A1));1)))
 
Ну и опять же: уникальные, это те, которые НЕ ПОВТОРЯЮТСЯ. Т.е. Вам надо из всех символов в ячейке убрать все повторяющиеся и оставить так, чтобы каждый символ был записан по одному разу? Или именно те символы, которые не повторяются?
Например, в слове "шалаш" два символа повторяются. Если выбирать только НЕ ПОВТОРЯЮЩИЕСЯ, то это будет одна буква - "л". Т.к. только она не повторяется. Если же надо отсечь все повторы и оставить только по одному уникальному символу - это будет "шал". Вам как надо?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Скажем так, есть ключ (пароль) необходимо понять количество уникальных символов в этом ключе.
Файла не прилагаю потому как пока такового нет.
Например, ячейка содержит:
dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@

Заметил, что строчные и заглавные считать разными ! (пароль все же :) )

Следующий шаг это подсчет не по одной ячейке, а по совокупности ячеек в колонке (хотя это можно свести к первому случаю объединив все ячейки с данными в одну)
Изменено: ALARMus - 10.06.2025 11:53:57
 
Цитата
написал:
"шал"
 
Цитата
написал:
не мешало бы версию экселя
2019
 
UDF
Код
Function ЯЧЕЙКАСЧЕТУНИК(iTxt)
Dim I&
Dim iTmp
With CreateObject("Scripting.Dictionary")
  For I = 1 To Len(iTxt)
    iTmp = .Item(Mid(iTxt, I, 1))
  Next
  ЯЧЕЙКАСЧЕТУНИК = .Count
End With
End Function

Для Вашего примера - 47 уникальных
Согласие есть продукт при полном непротивлении сторон
 
=СУММПРОИЗВ(--(ПОИСКПОЗ(КОДСИМВ(ПСТР("dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@";СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР("dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@")));1));КОДСИМВ(ПСТР("dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@";СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР("dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@")));1));)=СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР("dfkljwepowj230-@#F#$GJHSD$@346998642?><WE@#FWDFTahwmmqBG!@;;dcdne097%4rimsneuFT$@")))))
 
Цитата
написал:
Для Вашего примера - 47 уникальных
Без кода не выйдет ?
Фантазируя: транспанировать, каждый символ в отдельной ячейке, сводная таблица и количество символов по ней это количество строк в сводной таблице.
 
pq
 
Цитата
написал:
=СЧЁТЗ(УНИК(ПСТР(A1;ПОСЛЕД(ДЛСТР(A1));1)))
=СЧЁТЗ(УНИК(КОДСИМВ(ПСТР(A1;ПОСЛЕД(ДЛСТР(A1));1))))
 
Цитата
ALARMus написал:
Фантазируя: транспанировать, каждый символ в отдельной ячейке, сводная таблица и количество символов по ней это количество строк в сводной таблице.
так?
 
Msi2102, счётесли() там не пойдёт поскольку есть '<' '>'
и сводной по барабану регистр, если это имеет значение )
Цитата
Тимофеев:   =СЧЁТЗ(УНИК(КОДСИМВ(...
да так корректней, но это стало понятно из #7, а из #9 стало понятно что ни уник(), ни послед() не прокатят )
Изменено: ПавелW - 10.06.2025 14:37:54
 
Цитата
ПавелW написал:
счётесли() там не пойдёт поскольку есть ' '
я знаю, ещё там есть "?"  :D
Цитата
ПавелW написал:
и сводной по барабану регистр, если это имеет значение )
Я действовал строго по инструкции из сообщения №12  :D
 
может тогда разобрав каждый символ по строкам, найти в следующей колонке ASCII кодировку символа и уже можно применять сводную.
 
Вот ещё вариант для старых версий
Код
=ДЛСТР(A1)-
СУММ(--(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;СИМВОЛ(СТРОКА($1:$255));""))>1)*
(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;СИМВОЛ(СТРОКА($1:$255));""))-1))
Изменено: Тимофеев - 10.06.2025 17:04:49
 
Цитата
ALARMus написал:
может тогда разобрав каждый символ по строкам, найти в следующей колонке ASCII кодировку символа и уже можно применять сводную.
Можно так
или PQ, примерно так (кнопочный вариант)
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица5"]}[Content],
    #"Разделить столбец по положению" = Table.ExpandListColumn(Table.TransformColumns(Источник, {{"Столбец1", Splitter.SplitTextByRepeatedLengths(1), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Столбец1"),
    #"Сгруппированные строки" = Table.Group(#"Разделить столбец по положению", {"Столбец1"}, {{"Количество", each Table.RowCount(_), Int64.Type}})
in
    #"Сгруппированные строки"
Изменено: Msi2102 - 10.06.2025 17:32:35
 
Здравствуйте.
Ещё вариант.
Код
=СУММПРОИЗВ(--ЕЧИСЛО(НАЙТИ(СИМВОЛ(СТРОКА($1:$255));A1)))

А для всех ячеек А1:А10 можно так

Код
=СУММПРОИЗВ(--ЕЧИСЛО(НАЙТИ(СИМВОЛ(СТОЛБЕЦ($1:$255));СЦЕПИТЬ(A1;A2;A3;A4;A5;A6;A7;A8;A9;A10))))

Или я не так понял?

Изменено: gling - 10.06.2025 22:49:43
 
C frequency():
Excel  365
=SUM(--(FREQUENCY(CODE(MID(A1,SEQUENCE(LEN(A1)),1)),CODE(MID(A1,SEQUENCE(LEN(A1)),1)))>0))
Excel 2019
=SUM(--(FREQUENCY(CODE(MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),
              CODE(MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)))>0))
 
Цитата
gling написал:
Или я не так понял?
так но не корректно, вроде корректный результат иной. Ну а СТОЛБЕЦ($1:$255) - оно конечно работает, но в этом диапазоне 16К столбцов :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
gling написал:
Или я не так понял?
тут никто не понимает как надо, даже сам ТС не знает чего хочет🤣
 
Цитата
написал:
16К столбцов,
Больше не меньше.)
Писал для ячейки про строки, а чтоб не транспонировать для диапазона, бездумно заменил на столбец. Но работает же.)
 
=COUNT(FIND(CHAR(COLUMN($A:$IU));A1))
По вопросам из тем форума, личку не читаю.
Страницы: 1
Читают тему
Наверх