Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Составление списка уникальных значений с указанием сумм по ним
 
Коллеги, подскажите, пожалуйста.

Необходимо сделать список наиболее частых значений (артикулов) без создания дополнительных столбцов.
Проблема в том, что помимо подсчета уникальных значений (артикулов) есть ещё их количество и нужно составить список ТОП 20
Итоговый вариант выглядит так

Артикул №112233 - 10 штук
Артикул №112244 - 5 штук
Артикул №112255 - 3 штуки
Артикул №112266 - 2 штуки
Артикул №112277 - 2 штуки
и т.д.

Во вложении пример. Можно макросом, можно формулой массива, ссылаться буду на сторонний файл где имеется список. Была мысль через поискпоз, индекс, смещ, двссыл, счетесли, частота, наибольший и др. формулы в комбинации, но ДВССЫЛ не работает с закрытыми книгами..

Помогите, пожалуйста :( Верю в силу ПланетыЭксель.
 
Добрый.

Я, конечно, дилетант, но позвольте уточнить, возможно, мой вопрос наведёт Вас на решение.
А почему нельзя открыть данный сторонний файл и просто сделать сводную таблицу?
И артикулы будут уникальными и количество сможет показать, а дальше фильтром хоть ТОП-30 или ТОП-8?
 
Можно и так, но этих файлов 50 штук и они меняются каждую неделю. Пытаюсь оптимизировать свое рабочее время.

Сейчас сделал формулой список уникальных значений, через суммесли/суммпроизв подтягивается общее кол-во и формулой сортируется, но для этого требуется 3 доп столбца на каждую из 50 таблиц..

Так что ищу возможность делать это макросом либо громоздкой формулой массива.
 
Я, к своему собственному сожалению, макросами ещё не овладел.
Поэтому...
Если таблицы идентичные, то пропробуйте освоить это http://www.planetaexcel.ru/techniques/24/2152/ - это позволит собрать всё в один файл.
А дальше сводная, как я уже предлагал или PowerPivot.

Если нет, то извольте - ждите помощи от асов данного форума.

Удачи.
 
Delta-Dude,
Не далее как вчера была тема
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=98961
 
Kuzmich, Спасибо, вроде подходит, в VBA я краб 2ого уровня, поэтому буду своими клещнями тыкать и разбираться, узнаю у Юрия как сортировать и выводить только заданное количество, может сам разберусь, и проблема решена.

Ещё раз спасибо.
 
Delta-Dude, а поиск тем по сортировке массива не помог?
P.S. И в этой теме, и в той, ссылку на которую Вам дали, обсуждение сортировки массива будет офтопом )
 
В первоначальной был моей был вопрос о сортировке) я попробовал - не получилось. Но сейчас другой трабл. Короче просто на НГ буду изучать VBA, давно пора развиваться.. говорил себе.. иди на программиста.. нет... пошел экономистом стал. Дурак.
 
Почему сразу дурак? Вот попробуете силы в VBA - и рынок экомических задач в Excel - Ваш :)
 
Delta-Dude,написал
Цитата
на НГ буду изучать VBA, давно пора развиваться
Лучше всего изучать на собственном примере
Код
Sub iSumma_()
Dim Arr()
Dim i As Long
Dim iSumma As Double
Dim iLastRow As Long
Dim iTop As Integer
  iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  Range("H2:I" & iLastRow).ClearComments
  Arr = Range("B2:C" & iLastRow).Value
  With CreateObject("scripting.dictionary")
    For i = 1 To UBound(Arr)
      iSumma = .Item(Arr(i, 1))
      .Item(Arr(i, 1)) = iSumma + Arr(i, 2)
    Next
    Range("H2").Resize(.Count, 2) = Application.Transpose(Array(.Keys, .Items))
  End With
    iTop = Application.InputBox(prompt:="Какой вывести TOP ?", Type:=1)
    iLastRow = Cells(Rows.Count, 8).End(xlUp).Row
      Range("H2:I" & iLastRow).Sort key1:=Range("I2"), order1:=xlDescending
    If iTop + 1 <= iLastRow Then
      Range(Cells(2 + iTop, 8), Cells(iLastRow + 1, 9)).ClearContents
      Range("H1") = "Топ " & iTop
      Range("H1").HorizontalAlignment = xlCenter
    Else
      MsgBox "В списке всего уникальных артикулов: " & iLastRow - 1
      Range("H1") = "Топ " & iLastRow - 1
    End If
End Sub
Удачи!
 
Kuzmich, Спасибо большое, буду изучать!
Страницы: 1
Читают тему (гостей: 1)
Наверх