Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62

Подсчет совпадающих значений в ячейках

02.10.2013, 08:26. Показов 3301. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят, такая заковырка
написал код, который выполняет требуемые действия и выводит результат:
А___В
456 12
873 45
123 34
123 34
123 34
458 84
986 92
987 41
987 41

нужно сделать так, чтобы в столбце "С" выводилось кол-во повторяющихся ячеек:

А___В__С
456 12 1
873 45 1
123 34 3
458 84 1
986 92 1
987 41 2

пример во вложении
Вложения
Тип файла: xlsx пример.xlsx (11.0 Кб, 12 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2013, 08:26
Ответы с готовыми решениями:

Подсчет совпадающих значений
Привет всем! Есть словарь слов и список, так же хранящий в себе слова. Нужно сравнить их и если есть совпадающие слова, то для каждого...

Подсчёт количества значений в ячейках
Здравствуйте! Возникла такая проблема, - никак не могу составить формулу для подсчёта количества побед (ячейки F4:F19). Формулы для...

Подсчет количества одинаковых значений в последних 10 ячейках
Возможно ли сделать подсчет количества значений в последних 10 ячейках То есть в столбце 1: Кол-во "1" - 4 "2"...

25
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62
02.10.2013, 11:39  [ТС]
Студворк — интернет-сервис помощи студентам
вот смотрите... магазин формирует список товара, ходит по магазину и сканирует коробки. некоторый товар он может просканировать несколько раз (несколько одинаковых коробок). потом он список штрих-кодов вводит в столбец А на листе "ШК". в готовой таблице на листе должно отображаться, сколько товара он просканировал. если 1 раз - то значение 1, если он отсканировал 4 одинаковых товаров, то напротив этого товара должна стоять цифра 4

Добавлено через 1 минуту
внутри штрих-кода запрятан артикул и размер. на листе "Размеры" отображены все существующие товары и информация по ним
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
02.10.2013, 11:43
Так что-ли нужно? Пару "слов" добавил/изменил:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sub AnalizRazmerov2()
    Dim a(), i&, kodDict As Object, testDict As Object, nomDict As Object, countDict As Object
    Dim t$, el
 
    Set testDict = CreateObject("Scripting.Dictionary"): testDict.comparemode = 1
    Set kodDict = CreateObject("Scripting.Dictionary"): kodDict.comparemode = 1
    Set nomDict = CreateObject("Scripting.Dictionary"): nomDict.comparemode = 1
    Set countDict = CreateObject("Scripting.Dictionary"): countDict.comparemode = 1
 
    Sheets("Готовая").UsedRange.ClearContents
 
    a = Sheets("ШК").[A1].CurrentRegion.Value
    For i = 2 To UBound(a): testDict.Item(a(i, 1)) = testDict.Item(a(i, 1)) + 1: Next
 
    a = Sheets("Размеры").[A1].CurrentRegion.Value
    For i = 2 To UBound(a)
        If testDict.exists(a(i, 11)) Then
            t = a(i, 1) & "|" & a(i, 4)
            If Not kodDict.exists(t) Then kodDict.Item(t) = a(i, 1)
            If Not nomDict.exists(t) Then nomDict.Item(t) = a(i, 4)
            countDict.Item(t) = testDict.Item(a(i, 11)) 'countDict.Item(t) + 1
        End If
    Next
 
    ReDim a(1 To kodDict.Count + 1, 1 To 3)
    i = 1
    a(i, 1) = "Артикул"
    a(i, 2) = "Размер"
    a(i, 3) = "Кол-во"
 
    For Each el In kodDict.keys
        i = i + 1
        a(i, 1) = kodDict.Item(el)
        a(i, 2) = nomDict.Item(el)
        a(i, 3) = countDict.Item(el)
    Next
 
    With Sheets("Готовая").Range("A1").Resize(i, 3)
        .Columns(1).NumberFormat = "@"
        .Value = a
    End With
End Sub
Добавлено через 1 минуту
Так если в штрихкоде уже всё есть - так зачем вообще второй лист?
1
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62
02.10.2013, 11:47  [ТС]
да, вот сейчас отрабатывает как нужно))) спасибо огромное)))
насчет того, что все есть... если товар - обувь, то все просто: 2 предпоследнии цифры штрих-кода - это размер
а если это одежда, то в зависимости от того, какие 2 предпоследние цифры, размер идет XS, S, M, L, XL... и для разных групп одежды они не совпадают:где то 01 это S, где то 01 это M...
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
02.10.2013, 11:51
Ну раз уже сделал - вот вариант без второго листа:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub tt()
    Dim a(), i&, kodDict As Object
    Dim t$, el
 
    Set kodDict = CreateObject("Scripting.Dictionary"): kodDict.comparemode = 1
 
    Sheets("Готовая").UsedRange.ClearContents
    a = Sheets("ШК").[A1].CurrentRegion.Value
 
    For i = 2 To UBound(a): kodDict.Item(a(i, 1)) = kodDict.Item(a(i, 1)) + 1: Next
    ReDim a(1 To kodDict.Count + 1, 1 To 3)
    i = 1
    a(i, 1) = "Артикул"
    a(i, 2) = "Размер"
    a(i, 3) = "Кол-во"
 
    For Each el In kodDict.keys
        i = i + 1
        a(i, 1) = Mid(el, 3, 8)
        a(i, 2) = Mid(el, 11, 2)
        a(i, 3) = kodDict.Item(el)
    Next
    With Sheets("Готовая").Range("A1").Resize(i, 3)
        .Columns(1).NumberFormat = "@"
        .Value = a
    End With
 
End Sub
С одеждой тоже думаю можно сделать, чтоб без второго листа работало. Раз уж там есть строгая логика.
1
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62
02.10.2013, 11:53  [ТС]
в том то и дело, что строгой логики нету... где то "00" - это нет размера в принципе, а где то "00" - это размерный ряд S - L )))
но все равно спасибо)))
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
02.10.2013, 12:32
Так если на втором листе все строки уникальны - то код можно сильно упростить, не нужно там столько словарей, хватит думаю одного.
На досуге подумаю...

Добавлено через 30 минут
Вот на одном словаре.
Чуть "уплощил"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub AnalizRazmerov3()
    Dim a(), i&, t&, el
 
    With CreateObject("Scripting.Dictionary"): .comparemode = 1
 
        Sheets("Готовая").UsedRange.ClearContents
 
        a = Sheets("ШК").[A1].CurrentRegion.Value
        For i = 2 To UBound(a): .Item(a(i, 1)) = .Item(a(i, 1)) + 1: Next
 
        ReDim b(1 To .Count + 1, 1 To 3)
        i = 1: b(i, 1) = "Артикул": b(i, 2) = "Размер": b(i, 3) = "Кол-во"
 
        For Each el In .keys
            i = i + 1: b(i, 3) = .Item(el): .Item(el) = i
        Next
 
        a = Sheets("Размеры").[A1].CurrentRegion.Value
        For i = 2 To UBound(a)
            If .exists(a(i, 11)) Then
                t = .Item(a(i, 11)): b(t, 1) = a(i, 1): b(t, 2) = a(i, 4)
            End If
        Next
 
    End With
 
    With Sheets("Готовая").Range("A1").Resize(UBound(b), 3)
        .Columns(1).NumberFormat = "@": .Value = b
    End With
End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2013, 12:32

Подсчёт суммы значений в ячейках по столбцу по коду товара
Для упрощения. Вот есть две таблицы. Первая с двумя столбцами и кучей строк. 1 столбец в ней - это код товара, 2 столбец - цена. Товар...

Подсчет строк совпадающих с регулярным выражением
нашел в тексте строки которые подходят регулярному выражению, как подсчитать их кол-во? using (StreamReader rd = new...

Подсчет текста в ячейках
Подскажите, пожалуйста, что надо добавить в формулу, чтобы у меня из ячейки G не учитывались данные, если в ячейке I стоит слово...

Подсчёт данных в ячейках и строках
Необходимо подсчитать сумму чисел по строкам и столбцам, при этом в самих ячейках помимо чисел могут находиться другие символы (например...

Подсчет ячеек >0 в несмежных ячейках
Подскажите пожалуйста, как подсчитать количество ячеек >0 в несмежных ячейках. Функция СЧЕТ не подходит (считает числа, в том числе и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru