Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Посчитать количество уникальных значений по двум столбцам. - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Посчитать количество уникальных значений по двум столбцам. (Макросы/Sub)
Посчитать количество уникальных значений по двум столбцам.
Leksa Дата: Воскресенье, 13.03.2016, 17:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток!
Пытаюсь третий день решить задачку - понимаю, что решить функцией наверно не получиться, поэтому прошу совет.
В таблице необходимо проанализировать столбец С и К, Р убрать все дубли.
На соседний лист нужно вывести список пофамильно: количество уникальных по (С,К) в статусе Выполнено и количество в статусе отличном от Выполнено.

Поискала решение не нашла. Буду благодарна за помощь.
файл приложила.
К сообщению приложен файл: 7706880.xlsx (30.5 Kb)


Сообщение отредактировал Leksa - Воскресенье, 13.03.2016, 17:47
 
Ответить
СообщениеДоброго времени суток!
Пытаюсь третий день решить задачку - понимаю, что решить функцией наверно не получиться, поэтому прошу совет.
В таблице необходимо проанализировать столбец С и К, Р убрать все дубли.
На соседний лист нужно вывести список пофамильно: количество уникальных по (С,К) в статусе Выполнено и количество в статусе отличном от Выполнено.

Поискала решение не нашла. Буду благодарна за помощь.
файл приложила.

Автор - Leksa
Дата добавления - 13.03.2016 в 17:37
StoTisteg Дата: Воскресенье, 13.03.2016, 17:47 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
файл приложила.

Вы ошибаетесь.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
файл приложила.

Вы ошибаетесь.

Автор - StoTisteg
Дата добавления - 13.03.2016 в 17:47
Manyasha Дата: Воскресенье, 13.03.2016, 17:47 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Leksa, файл не приложился (пример должен быть не более 100кб).
Данные - удалить дубликаты не подходит?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеLeksa, файл не приложился (пример должен быть не более 100кб).
Данные - удалить дубликаты не подходит?

Автор - Manyasha
Дата добавления - 13.03.2016 в 17:47
Leksa Дата: Воскресенье, 13.03.2016, 17:50 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, да верно не приложила - исправила)

удалить дубликаты не подходит, так как структуру исходно листа трогать нельзя и нужно вывод именно в ту область которая на 2 листе.
 
Ответить
СообщениеManyasha, да верно не приложила - исправила)

удалить дубликаты не подходит, так как структуру исходно листа трогать нельзя и нужно вывод именно в ту область которая на 2 листе.

Автор - Leksa
Дата добавления - 13.03.2016 в 17:50
Leksa Дата: Воскресенье, 13.03.2016, 17:50 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, исправила.
 
Ответить
СообщениеStoTisteg, исправила.

Автор - Leksa
Дата добавления - 13.03.2016 в 17:50
Manyasha Дата: Воскресенье, 13.03.2016, 18:14 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Leksa, предложу пока без макросов: сводная таблица.
Не очень поняла
количество уникальных по (С,К)
на листе 2 у Вас только уникальные по K выписаны, сделала, как в примере. Если номера (столбец С) тоже нужны, добавьте это поле в сводную (просто перетащите в поле названия строк)
К сообщению приложен файл: 7706880-1.xlsx (35.7 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеLeksa, предложу пока без макросов: сводная таблица.
Не очень поняла
количество уникальных по (С,К)
на листе 2 у Вас только уникальные по K выписаны, сделала, как в примере. Если номера (столбец С) тоже нужны, добавьте это поле в сводную (просто перетащите в поле названия строк)

Автор - Manyasha
Дата добавления - 13.03.2016 в 18:14
StoTisteg Дата: Воскресенье, 13.03.2016, 18:20 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
структуру исходно листа трогать нельзя

А скопировать первый лист на третий и там трогать сколько угодно — не вариант?


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
структуру исходно листа трогать нельзя

А скопировать первый лист на третий и там трогать сколько угодно — не вариант?

Автор - StoTisteg
Дата добавления - 13.03.2016 в 18:20
Leksa Дата: Воскресенье, 13.03.2016, 18:38 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, коряво я наверное объяснила.
В итоге в своде я вижу что выполнено у Ивановой 5, но № у 4 записей совпадает - они должны считаться как 1 запись.
т.е. фактом сейчас у Ивановой выполнено все два под № 1 и 9.
 
Ответить
СообщениеManyasha, коряво я наверное объяснила.
В итоге в своде я вижу что выполнено у Ивановой 5, но № у 4 записей совпадает - они должны считаться как 1 запись.
т.е. фактом сейчас у Ивановой выполнено все два под № 1 и 9.

Автор - Leksa
Дата добавления - 13.03.2016 в 18:38
Leksa Дата: Воскресенье, 13.03.2016, 18:48 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, в том то и дело что вроде как вручную можно удалить, потом свод сделать, но файлов будет много и срок обработки очень ограничен.
собственно это и натолкнуло на попытку найти решение.
 
Ответить
СообщениеStoTisteg, в том то и дело что вроде как вручную можно удалить, потом свод сделать, но файлов будет много и срок обработки очень ограничен.
собственно это и натолкнуло на попытку найти решение.

Автор - Leksa
Дата добавления - 13.03.2016 в 18:48
TimSha Дата: Воскресенье, 13.03.2016, 18:49 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
Репутация: 94 ±
Замечаний: 0% ±

Excel 2013 Pro +
выполнено у Ивановой 5, но № у 4 записей совпадает - они должны считаться как 1 запись.

Это с какой стали?! Если 2 из них - в дефиците, а две других... ;)
ps У вас XL-2013? Так стройте сводную с добавлением данных в модель данных, и тогда будет возможность считать уникальные номера и пр.


"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Ответить
Сообщение
выполнено у Ивановой 5, но № у 4 записей совпадает - они должны считаться как 1 запись.

Это с какой стали?! Если 2 из них - в дефиците, а две других... ;)
ps У вас XL-2013? Так стройте сводную с добавлением данных в модель данных, и тогда будет возможность считать уникальные номера и пр.

Автор - TimSha
Дата добавления - 13.03.2016 в 18:49
StoTisteg Дата: Воскресенье, 13.03.2016, 19:00 | Сообщение № 11
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
файлов будет много и срок обработки очень ограничен

Ну можно и макросом, но пока такое извращение получается...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
файлов будет много и срок обработки очень ограничен

Ну можно и макросом, но пока такое извращение получается...

Автор - StoTisteg
Дата добавления - 13.03.2016 в 19:00
Leksa Дата: Воскресенье, 13.03.2016, 19:02 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Это с какой стали?! Если 2 из них - в дефиците, а две других... ;)

TimSha, в том то и дело что важно посчитать уникальные по столбцам ФИО и № в статусе отличном от Выполненно, не важно что по другим столбцам они не уникальны.

Если я все таки найду как добавлением данных в модель данных в 2013. при открытии в 2010 и 2007 слетит?
 
Ответить
Сообщение
Это с какой стали?! Если 2 из них - в дефиците, а две других... ;)

TimSha, в том то и дело что важно посчитать уникальные по столбцам ФИО и № в статусе отличном от Выполненно, не важно что по другим столбцам они не уникальны.

Если я все таки найду как добавлением данных в модель данных в 2013. при открытии в 2010 и 2007 слетит?

Автор - Leksa
Дата добавления - 13.03.2016 в 19:02
StoTisteg Дата: Воскресенье, 13.03.2016, 19:17 | Сообщение № 13
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Leksa, раз много файлов, ничего кроме макроса не придумаешь... тогда два вопроса.
1) Исходные данные приходят уже с листом 2 или Вы его просто вписали для примера?
2) Листов с данными в каждой книге один или может быть много?


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеLeksa, раз много файлов, ничего кроме макроса не придумаешь... тогда два вопроса.
1) Исходные данные приходят уже с листом 2 или Вы его просто вписали для примера?
2) Листов с данными в каждой книге один или может быть много?

Автор - StoTisteg
Дата добавления - 13.03.2016 в 19:17
Leksa Дата: Воскресенье, 13.03.2016, 19:24 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg,
1. исходные данные без второго листа - вписала для примера, чтоб видеть результат.
2. лист всегда 1
 
Ответить
СообщениеStoTisteg,
1. исходные данные без второго листа - вписала для примера, чтоб видеть результат.
2. лист всегда 1

Автор - Leksa
Дата добавления - 13.03.2016 в 19:24
МВТ Дата: Воскресенье, 13.03.2016, 19:39 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Ну можно и макросом, но пока такое извращение получается...

Или я не так понял задачу, или "мсье знает толк в извращениях" лучше, чем я
[vba]
Код
Option Explicit
Function tt()
    Dim arr(), Col As Object, I As Long
    arr = Range("C3:K" & Cells(Rows.Count, "K").End(xlUp).Row)
    Set Col = CreateObject("Scripting.dictionary")
    With Col
        For I = 1 To UBound(arr)
            If Not .exists(arr(I, 1) & arr(I, 9)) Then .Add Key:=arr(I, 1) & arr(I, 9), Item:=0
        Next
        tt = .Count
    End With
    Erase arr: Set Col = Nothing
End Function
[/vba]
 
Ответить
Сообщение
Ну можно и макросом, но пока такое извращение получается...

Или я не так понял задачу, или "мсье знает толк в извращениях" лучше, чем я
[vba]
Код
Option Explicit
Function tt()
    Dim arr(), Col As Object, I As Long
    arr = Range("C3:K" & Cells(Rows.Count, "K").End(xlUp).Row)
    Set Col = CreateObject("Scripting.dictionary")
    With Col
        For I = 1 To UBound(arr)
            If Not .exists(arr(I, 1) & arr(I, 9)) Then .Add Key:=arr(I, 1) & arr(I, 9), Item:=0
        Next
        tt = .Count
    End With
    Erase arr: Set Col = Nothing
End Function
[/vba]

Автор - МВТ
Дата добавления - 13.03.2016 в 19:39
Leksa Дата: Воскресенье, 13.03.2016, 19:50 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
МВТ, как этим пользоваться?
вставила функцию в модуль а далее?
 
Ответить
СообщениеМВТ, как этим пользоваться?
вставила функцию в модуль а далее?

Автор - Leksa
Дата добавления - 13.03.2016 в 19:50
KuklP Дата: Воскресенье, 13.03.2016, 20:00 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Мож так?

[vba]
Код
Public Sub www()
    Dim a, i&, n&, dc As Object
    Set dc = CreateObject("scripting.dictionary")
    a = Range("a3:P" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a), 1 To 4)
    For i = 1 To UBound(a)
        If dc.exists(a(i, 3) & "|" & a(i, 11) & "|") And a(i, 16) = "Выполнено" Then
            b(dc.Item(a(i, 3) & "|" & a(i, 11) & "|"), 3) = b(dc.Item(a(i, 3) & "|" & a(i, 11) & "|"), 3) + 1
        ElseIf dc.exists(a(i, 3) & "|" & a(i, 11) & "]") And a(i, 16) <> "Выполнено" Then
            b(dc.Item(a(i, 3) & "|" & a(i, 11) & "]"), 3) = b(dc.Item(a(i, 3) & "|" & a(i, 11) & "]"), 3) + 1
        ElseIf a(i, 16) = "Выполнено" Then
            n = n + 1: dc.Item(a(i, 3) & "|" & a(i, 11) & "|") = n: b(n, 1) = a(i, 3)
            b(n, 2) = a(i, 11): b(n, 4) = a(i, 16): b(n, 3) = 1
        Else
            n = n + 1: dc.Item(a(i, 3) & "|" & a(i, 11) & "]") = n: b(n, 1) = a(i, 3)
            b(n, 2) = a(i, 11): b(n, 4) = "Не выполнено": b(n, 3) = 1
        End If
        Debug.Print n
    Next
    Sheets(3).[a2].Resize(n, 4) = b
     Sheets(3).Activate
End Sub
[/vba]
К сообщению приложен файл: 7706880.xlsm (40.3 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеМож так?

[vba]
Код
Public Sub www()
    Dim a, i&, n&, dc As Object
    Set dc = CreateObject("scripting.dictionary")
    a = Range("a3:P" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a), 1 To 4)
    For i = 1 To UBound(a)
        If dc.exists(a(i, 3) & "|" & a(i, 11) & "|") And a(i, 16) = "Выполнено" Then
            b(dc.Item(a(i, 3) & "|" & a(i, 11) & "|"), 3) = b(dc.Item(a(i, 3) & "|" & a(i, 11) & "|"), 3) + 1
        ElseIf dc.exists(a(i, 3) & "|" & a(i, 11) & "]") And a(i, 16) <> "Выполнено" Then
            b(dc.Item(a(i, 3) & "|" & a(i, 11) & "]"), 3) = b(dc.Item(a(i, 3) & "|" & a(i, 11) & "]"), 3) + 1
        ElseIf a(i, 16) = "Выполнено" Then
            n = n + 1: dc.Item(a(i, 3) & "|" & a(i, 11) & "|") = n: b(n, 1) = a(i, 3)
            b(n, 2) = a(i, 11): b(n, 4) = a(i, 16): b(n, 3) = 1
        Else
            n = n + 1: dc.Item(a(i, 3) & "|" & a(i, 11) & "]") = n: b(n, 1) = a(i, 3)
            b(n, 2) = a(i, 11): b(n, 4) = "Не выполнено": b(n, 3) = 1
        End If
        Debug.Print n
    Next
    Sheets(3).[a2].Resize(n, 4) = b
     Sheets(3).Activate
End Sub
[/vba]

Автор - KuklP
Дата добавления - 13.03.2016 в 20:00
Pelena Дата: Воскресенье, 13.03.2016, 20:10 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Вариант формулами
Или сводной с доп. столбцами (попаразитировала на файле Марины)
К сообщению приложен файл: 7457389.xlsx (64.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВариант формулами
Или сводной с доп. столбцами (попаразитировала на файле Марины)

Автор - Pelena
Дата добавления - 13.03.2016 в 20:10
Leksa Дата: Воскресенье, 13.03.2016, 20:19 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
KuklP, по Ивановой сейчас выполнено всего 2 задачи № - это 1 и 9
а не выполнено 1задача под №1.

т.е в результате хочется получить таблицу как на листе 2 в столбце B по Ивановой 2, в столбце С по Ивановой 1 .
 
Ответить
СообщениеKuklP, по Ивановой сейчас выполнено всего 2 задачи № - это 1 и 9
а не выполнено 1задача под №1.

т.е в результате хочется получить таблицу как на листе 2 в столбце B по Ивановой 2, в столбце С по Ивановой 1 .

Автор - Leksa
Дата добавления - 13.03.2016 в 20:19
Leksa Дата: Воскресенье, 13.03.2016, 20:33 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, глазам не верю, но считает правильно.
диапазон увеличиваю до 192 строки - потом заветное ctrl+shift+enter - деление на ноль(((
 
Ответить
СообщениеPelena, глазам не верю, но считает правильно.
диапазон увеличиваю до 192 строки - потом заветное ctrl+shift+enter - деление на ноль(((

Автор - Leksa
Дата добавления - 13.03.2016 в 20:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Посчитать количество уникальных значений по двум столбцам. (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!