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

Вход

Регистрация

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

 

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

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

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

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


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

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

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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
файл приложила.

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

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

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


marinamorozova_box@mail.ru
ЯД: 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1974
Репутация: 817 ±
Замечаний: 0% ±

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


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

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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
структуру исходно листа трогать нельзя

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

Автор - 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
Группа: Проверенные
Ранг: Ветеран
Сообщений: 522
Репутация: 82 ±
Замечаний: 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
файлов будет много и срок обработки очень ограничен

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

Автор - 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение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
Репутация: 136 ±
Замечаний: 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
Группа: Проверенные
Ранг: Старожил
Сообщений: 2300
Репутация: 474 ±
Замечаний: 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(40Kb)


Ну с НДС и мы чего-то ст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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11490
Репутация: 2555 ±
Замечаний: 0% ±

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


"Черт возьми, Холмс! Но как??!!"
ЯД 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 из 212»
Поиск:

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