Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 29 окт 2022, 09:26 
Не в сети
Мастер
Зарегистрирован:
06 окт 2016, 16:35
Сообщений: 290
Cпасибо сказано: 201
Спасибо получено:
12 раз в 12 сообщениях
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Здравствуйте,

дан столбец с буквами, например, A, B, C, A, A, C, D, C, B, B...

Нужно подсчитать, сколько раз каждая буква входит в столбец, но проблема в том, что неизвестно, какие именно буквы туда входят. Нужно построить то, что в Питоне называется словарём, то есть, получить таблицу вида: А 3, B 3, C 3, D 1 и т. п. То есть, Excel должен сам сформировать множество букв, пробегая по столбцу, и подсчитать количество.

Как это сделать? Я даже прошу не столько формулу, сколько направление, в котором искать информацию. Как сформулировать задачу в терминах Excel?

Спасибо.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 29 окт 2022, 10:04 
Не в сети
Beautiful Mind
Зарегистрирован:
22 дек 2019, 21:57
Сообщений: 1602
Откуда: Болгарии
Cпасибо сказано: 51
Спасибо получено:
633 раз в 616 сообщениях
Очков репутации: 129

Добавить очки репутацииУменьшить очки репутации
alekscooper писал(а):
Как это сделать? Я даже прошу не столько формулу, сколько направление, в котором искать информацию. Как сформулировать задачу в терминах Excel?

Если умеете писать макросов на VBA for EXCEL - то напишите макрос пользуяс двойном
циклом :
например :

For ... to
...
next

или
repeat
...
until

или
do
...
loop

Где в первом цикле проходите по столбец с буквами, а во втором накопляйте число каждого из встретившим
в столбец букв. Отделно создайте масив с множество букв и проверяйте каждой элемент
столбца с какой из букв множества совпадает - тогда по этом индиксом и нокопляйте число встретившим в столбец букв.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 29 окт 2022, 11:08 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
19 фев 2011, 23:53
Сообщений: 1887
Откуда: Алексин
Cпасибо сказано: 275
Спасибо получено:
980 раз в 774 сообщениях
Очков репутации: 229

Добавить очки репутацииУменьшить очки репутации
alekscooper писал(а):
Здравствуйте,

дан столбец с буквами, например, A, B, C, A, A, C, D, C, B, B...

Нужно подсчитать, сколько раз каждая буква входит в столбец, но проблема в том, что неизвестно, какие именно буквы туда входят. Нужно построить то, что в Питоне называется словарём, то есть, получить таблицу вида: А 3, B 3, C 3, D 1 и т. п. То есть, Excel должен сам сформировать множество букв, пробегая по столбцу, и подсчитать количество.

Как это сделать? Я даже прошу не столько формулу, сколько направление, в котором искать информацию. Как сформулировать задачу в терминах Excel?

Спасибо.


Извлечение уникальных элементов из диапазона

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 29 окт 2022, 11:16 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
19 фев 2011, 23:53
Сообщений: 1887
Откуда: Алексин
Cпасибо сказано: 275
Спасибо получено:
980 раз в 774 сообщениях
Очков репутации: 229

Добавить очки репутацииУменьшить очки репутации
Pirinchily писал(а):
Если умеете писать макросов на VBA for EXCEL - то напишите макрос пользуяс двойном
циклом


Возможно сделать все в одном цикле перебора букв.
Для этого нужно найти способ учитывать встречалась это буква или нет ранее.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 29 окт 2022, 13:21 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1122
Cпасибо сказано: 43
Спасибо получено:
209 раз в 203 сообщениях
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
Используйте функцию COUNTIF (английская версия), или ZÄHLENWENN (немецкая версия), или СЧЁТЕСЛИ (русская версия)

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 30 окт 2022, 00:00 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1122
Cпасибо сказано: 43
Спасибо получено:
209 раз в 203 сообщениях
Очков репутации: 27

Добавить очки репутацииУменьшить очки репутации
А можно с помощь функции пользователя.
Я написал ее программку на Excel-VBA. К сожалению, без вложенного цикла не обошлось:

Function WasWieOft(Feld As Range) As String
Dim X, List(), Table(), Anzahl() As Integer
Dim N As Integer, i As Integer, j As Integer, k As Integer
Dim WasNot As Boolean
N = 0
For Each X In Feld ' считывает таблицу в массив "Table"
N = N + 1
ReDim Preserve Table(1 To N) ' копия таблицы Excel
Table(N) = X
Next
k = 0 ' счетчик списка, в котором не будет повторений
For i = 1 To N ' текущая строка в таблице
WasNot = True
For j = 1 To i - 1 ' проверяет, встречалась ли такая буква в предыдущих строках
If Table(i) = Table(j) Then ' если такая буква уже была раньше
WasNot = False
Exit For
Else
WasNot = True
End If
Next j
If WasNot Then
k = k + 1
ReDim Preserve List(1 To k)
ReDim Preserve Anzahl(1 To k)
Anzahl(k) = 0
List(k) = Table(i)
For j = i To N ' считает, сколько раз повторяется новая буква в нижележащем списке
If Table(j) = List(k) Then Anzahl(k) = Anzahl(k) + 1
Next j
End If
Next i
WasWieOft = ""
For i = 1 To k
WasWieOft = WasWieOft & List(i) & " = " & Anzahl(i) & " "
Next i
End Function

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как подсчитать число дубликатов если значения неизвестны?
СообщениеДобавлено: 30 окт 2022, 09:22 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
19 фев 2011, 23:53
Сообщений: 1887
Откуда: Алексин
Cпасибо сказано: 275
Спасибо получено:
980 раз в 774 сообщениях
Очков репутации: 229

Добавить очки репутацииУменьшить очки репутации
С одним циклом
Public Sub CountingUniqueValues()
Dim cell As Range 'Текущая ячейка
Set cell = Application.ActiveCell

Dim processedRange As Range 'Диапозон, в котором считаем уникальные значения
Set processedRange = Application.InputBox("Выберите диапозон: ", "Меню выбора диапозона", Type:=8)

'А нужны ли проверки 1. выбран ли диапазон ?
' 2. пересечения диапозона и текущей ячейки пусто?
' 3. ....

Dim k As Integer 'Количество найденных уникальных значений
k = 0

Dim iterateCell As Range 'Для перебора ячеек диапозона
Dim auxiliaryCell As Range 'Для проверки встречали мы уже уникальное значение при переборе или нет
'Можно обойтись строкой, если мы уверены, что проверяемые значения - только буквы
'Но тогда нужно использовать функцию InStr поиска в строке, а не Find
'А вообще можно через словарь CreateObject("Scripting.Dictionary") или CreateObject("System.Collections.ArrayList"),
' но лень разбираться

Application.ScreenUpdating = False 'скрываем работу макроса

For Each iterateCell In processedRange
If k > 0 Then
Set auxiliaryCell = Range(cell, cell.Offset(k - 1, 0)).Find(iterateCell.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If auxiliaryCell Is Nothing Then
cell.Offset(k, 0).Value = iterateCell.Value
cell.Offset(k, 1).Value = 1
k = k + 1
Else
auxiliaryCell.Offset(0, 1) = auxiliaryCell.Offset(0, 1) + 1
End If
Else
cell.Value = iterateCell.Value
cell.Offset(0, 1).Value = 1
k = 1
End If
Next

Application.ScreenUpdating = True
End Sub



Без циклов
Public Sub CountingUniqueValues1()
Dim cell As Range 'Текущая ячейка
Set cell = Application.ActiveCell

Dim processedRange As Range 'Диапозон, в котором считаем уникальные значения
Set processedRange = Application.InputBox("Выберите диапозон: ", "Меню выбора диапозона", Type:=8)

'А нужны ли проверки 1. выбран ли диапазон ?
' 2. пересечения диапозона и текущей ячейки пусто?
' 3. ....

Application.ScreenUpdating = False 'скрываем работу макроса

processedRange.Copy cell ' Копирум диапозон в активную ячейку
Range(cell, cell.Offset(processedRange.Rows.Count - 1, 0)).RemoveDuplicates (1) ' Удаляем дупликаты в скопированном дипозоне !!! не различает регистр !!!

Dim k As Integer 'количество уникальных значений
k = WorksheetFunction.CountA(Range(cell, cell.Offset(processedRange.Rows.Count - 1, 0)))

'!!! Не учитывает регистр !!!
Range(cell.Offset(0, 1), cell.Offset(k - 1, 1)).FormulaArray = "=COUNTIF(" + processedRange.Address + ", " + Range(cell, cell.Offset(processedRange.Rows.Count - 1, 0)).Address + ")"

Application.ScreenUpdating = True
End Sub

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 7 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Подсчитать число функций, принадлежащих мн-ву

в форуме Дискретная математика, Теория множеств и Логика

artem2006

3

163

16 дек 2020, 15:16

Подсчитать число функций F(~x^n) , у которых

в форуме Дискретная математика, Теория множеств и Логика

MrKreter

1

137

09 мар 2021, 14:17

Подсчитать число особых логических функций

в форуме Дискретная математика, Теория множеств и Логика

KuznetsovSA

5

194

10 май 2021, 23:52

Подсчитать число слов длины n,довлетворяющих данным условиям

в форуме Дискретная математика, Теория множеств и Логика

MrKreter

3

164

04 дек 2020, 18:06

Слова, алфавит. Подсчитать число вхождений буквы в слово

в форуме Дискретная математика, Теория множеств и Логика

MrKreter

1

191

04 дек 2020, 17:42

Какова сторона квадрата, если её значение натуральное число

в форуме Геометрия

VICTORQQQQ

2

259

11 апр 2017, 20:59

Число элементов, значения которых находятся в интервале

в форуме Математическая статистика и Эконометрика

gasemen

1

493

21 июн 2014, 15:30

Подсчитать приближенно

в форуме Дифференциальное исчисление

makc2299

4

286

30 мар 2019, 22:35

Как подсчитать вероятность

в форуме Палата №6

ineedscore

57

3800

22 ноя 2013, 02:46

Подсчитать количество конфигураций 4-х пар

в форуме Дискретная математика, Теория множеств и Логика

vanchester

20

1310

02 мар 2015, 20:55


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2022 MathHelpPlanet.com. All rights reserved