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

Вход

Регистрация

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

 

= Мир MS Excel/А-ля сводная таблица - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
А-ля сводная таблица
airwaves18244 Дата: Вторник, 25.12.2012, 14:27 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Добрый день! Подскажите пожалуйста, как можно получить подобную сводную таблицу?
Необходимо отфильтровать уникальные значения Д1-Д18( в ячейках D17:V69) - сделать их строками сводной таблицы
Имена узлов(столбец С) - столбцами сводной таблицы
И посчитать кол-во встречающихся элементов в таблице.

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

Во вложении пример.

К сообщению приложен файл: -_.xls (77.0 Kb) · 7028054.jpg (48.0 Kb)


Сообщение отредактировал airwaves18244 - Вторник, 25.12.2012, 14:28
 
Ответить
СообщениеДобрый день! Подскажите пожалуйста, как можно получить подобную сводную таблицу?
Необходимо отфильтровать уникальные значения Д1-Д18( в ячейках D17:V69) - сделать их строками сводной таблицы
Имена узлов(столбец С) - столбцами сводной таблицы
И посчитать кол-во встречающихся элементов в таблице.

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

Во вложении пример.


Автор - airwaves18244
Дата добавления - 25.12.2012 в 14:27
Serge_007 Дата: Вторник, 25.12.2012, 15:24 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (airwaves18244)
С помощью стандартной сводной таблицы не могу получить на выходе результат, который мне нужен

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


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (airwaves18244)
С помощью стандартной сводной таблицы не могу получить на выходе результат, который мне нужен

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

Автор - Serge_007
Дата добавления - 25.12.2012 в 15:24
airwaves18244 Дата: Вторник, 25.12.2012, 15:33 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, А подскажите какими методами отобрать уникальные значения? И осуществить счет по 2м условиям?
 
Ответить
СообщениеSerge_007, А подскажите какими методами отобрать уникальные значения? И осуществить счет по 2м условиям?

Автор - airwaves18244
Дата добавления - 25.12.2012 в 15:33
Serge_007 Дата: Вторник, 25.12.2012, 15:47 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
airwaves18244 Дата: Вторник, 25.12.2012, 17:38 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, Сергей, спасибо.
Но возникают вопросы- во всех примерах извлечение уникальных значений из столбца, а возможно ли из массива? У меня вообщем не получилось. А если делать уникальные для каждого столбца, потом уникальные для результатов по всем столбцам, вообщем кривая схема)
 
Ответить
СообщениеSerge_007, Сергей, спасибо.
Но возникают вопросы- во всех примерах извлечение уникальных значений из столбца, а возможно ли из массива? У меня вообщем не получилось. А если делать уникальные для каждого столбца, потом уникальные для результатов по всем столбцам, вообщем кривая схема)

Автор - airwaves18244
Дата добавления - 25.12.2012 в 17:38
airwaves18244 Дата: Вторник, 25.12.2012, 17:50 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, В примере http://www.excelworld.ru/publ/formulas/tricks/extract_unique/17-1-0-10 идет извлечение уникальных значений из столбца В. Возможно ли данным способом извлечь уникальные значения из диапазона В:G?
 
Ответить
СообщениеSerge_007, В примере http://www.excelworld.ru/publ/formulas/tricks/extract_unique/17-1-0-10 идет извлечение уникальных значений из столбца В. Возможно ли данным способом извлечь уникальные значения из диапазона В:G?

Автор - airwaves18244
Дата добавления - 25.12.2012 в 17:50
airwaves18244 Дата: Вторник, 25.12.2012, 18:20 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, Подсчет выполнил через суммпроизв(х*y).
К сообщению приложен файл: -_3.xls (89.5 Kb)


Сообщение отредактировал airwaves18244 - Вторник, 25.12.2012, 18:23
 
Ответить
СообщениеSerge_007, Подсчет выполнил через суммпроизв(х*y).

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

Serge_007, Нашел пример отбора уникальных значений через макрос. Во вложении пример. Но он тоже по столбцу. Возможно ли его отредактировать для отбора уникальных из массива не знаю? uhm uhm
К сообщению приложен файл: -_vba.xls (81.0 Kb)
 
Ответить
СообщениеSerge_007, Нашел пример отбора уникальных значений через макрос. Во вложении пример. Но он тоже по столбцу. Возможно ли его отредактировать для отбора уникальных из массива не знаю? uhm uhm

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

Бинго!

[vba]
Код
Sub Extract_Unique()
Dim vItem, avArr, li As Long
ReDim avArr(1 To Rows.Count, 1 To 1)
With New Collection
On Error Resume Next
For Each vItem In Range([b]"A2", Cells(Rows.Count, 2[/b]).End(xlUp)).Value
'Cells(Rows.Count, 1).End(xlUp)
.Add vItem, CStr(vItem)
If Err = 0 Then
li = li + 1: avArr(li, 1) = vItem
Else: Err.Clear
End If
Next
End With
If li Then [E2].Resize(li).Value = avArr
End Sub
[/vba]

Осталось отсортировать уникальные по алфавиту

Получилось формулой через
Код
=ИНДЕКС(AC$30:AC$44;ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(AC$30:AC$44;"<="&AC$30:AC$44);СУММ(1;СЧЁТЕСЛИ(AC$30:AC$44;AD$29:AD29);СЧИТАТЬПУСТОТЫ(AC$30:AC$44)));СЧЁТЕСЛИ(AC$30:AC$44;"<="&AC$30:AC$44);))


Сообщение отредактировал airwaves18244 - Вторник, 25.12.2012, 18:51
 
Ответить
СообщениеБинго!

[vba]
Код
Sub Extract_Unique()
Dim vItem, avArr, li As Long
ReDim avArr(1 To Rows.Count, 1 To 1)
With New Collection
On Error Resume Next
For Each vItem In Range([b]"A2", Cells(Rows.Count, 2[/b]).End(xlUp)).Value
'Cells(Rows.Count, 1).End(xlUp)
.Add vItem, CStr(vItem)
If Err = 0 Then
li = li + 1: avArr(li, 1) = vItem
Else: Err.Clear
End If
Next
End With
If li Then [E2].Resize(li).Value = avArr
End Sub
[/vba]

Осталось отсортировать уникальные по алфавиту

Получилось формулой через
Код
=ИНДЕКС(AC$30:AC$44;ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(AC$30:AC$44;"<="&AC$30:AC$44);СУММ(1;СЧЁТЕСЛИ(AC$30:AC$44;AD$29:AD29);СЧИТАТЬПУСТОТЫ(AC$30:AC$44)));СЧЁТЕСЛИ(AC$30:AC$44;"<="&AC$30:AC$44);))

Автор - airwaves18244
Дата добавления - 25.12.2012 в 18:47
AlexMatashev Дата: Среда, 26.12.2012, 09:12 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 2 ±
Замечаний: 0% ±

Цитата (airwaves18244)
Возможно ли данным способом извлечь уникальные значения из диапазона В:G?

Как то тоже приходилось решать подобную задачу.
В итоге использовал прилагаемый макрос (нашел на одном из форумов).
К сообщению приложен файл: _-_-.xls (30.5 Kb)
 
Ответить
Сообщение
Цитата (airwaves18244)
Возможно ли данным способом извлечь уникальные значения из диапазона В:G?

Как то тоже приходилось решать подобную задачу.
В итоге использовал прилагаемый макрос (нашел на одном из форумов).

Автор - AlexMatashev
Дата добавления - 26.12.2012 в 09:12
airwaves18244 Дата: Среда, 26.12.2012, 09:17 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexMatashev, спасибо) совмещу с предыдущим макросом


Сообщение отредактировал airwaves18244 - Среда, 26.12.2012, 09:45
 
Ответить
СообщениеAlexMatashev, спасибо) совмещу с предыдущим макросом

Автор - airwaves18244
Дата добавления - 26.12.2012 в 09:17
airwaves18244 Дата: Среда, 26.12.2012, 11:02 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, Сергей можете подсказать по строке в макросе?

[Sel].Cells.Resize(Uniq.Count) = Application.Transpose(Uniq.keys)

Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

[admin]airwaves18244, оформляйте коды тегами![/admin]
[vba]
Код

Sub Уникальные_выделение_2D()
Dim i As Long, j As Long
Dim Rng As Range, Sel As Range
Dim arr
Dim Uniq As Object
Set Rng = Application.InputBox(prompt:="Выделите диапазон для поиска уникальных", Type:=8)
Set Sel = Application.InputBox(prompt:="Выделите ячейку для вывода данных", Type:=8)
Set Uniq = CreateObject("scripting.dictionary")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
arr = Rng.Value
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
If Len(arr(i, j)) > 0 Then
If Not Uniq.Exists(arr(i, j)) Then
Uniq.Add arr(i, j), 0
End If
End If
Next
Next
[Sel].Cells.Resize(Uniq.Count) = Application.Transpose(Uniq.keys)
set Rng = Nothing: Set arr = Nothing: Set Sel = Nothing: Set Uniq = Nothing
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
[/vba]


Сообщение отредактировал airwaves18244 - Среда, 26.12.2012, 12:00
 
Ответить
СообщениеSerge_007, Сергей можете подсказать по строке в макросе?

[Sel].Cells.Resize(Uniq.Count) = Application.Transpose(Uniq.keys)

Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

[admin]airwaves18244, оформляйте коды тегами![/admin]
[vba]
Код

Sub Уникальные_выделение_2D()
Dim i As Long, j As Long
Dim Rng As Range, Sel As Range
Dim arr
Dim Uniq As Object
Set Rng = Application.InputBox(prompt:="Выделите диапазон для поиска уникальных", Type:=8)
Set Sel = Application.InputBox(prompt:="Выделите ячейку для вывода данных", Type:=8)
Set Uniq = CreateObject("scripting.dictionary")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
arr = Rng.Value
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
If Len(arr(i, j)) > 0 Then
If Not Uniq.Exists(arr(i, j)) Then
Uniq.Add arr(i, j), 0
End If
End If
Next
Next
[Sel].Cells.Resize(Uniq.Count) = Application.Transpose(Uniq.keys)
set Rng = Nothing: Set arr = Nothing: Set Sel = Nothing: Set Uniq = Nothing
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
[/vba]

Автор - airwaves18244
Дата добавления - 26.12.2012 в 11:02
Serge_007 Дата: Среда, 26.12.2012, 12:25 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (airwaves18244)
Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

За транспонирование отвечает функция листа Application.Transpose()
Уберите её

ЗЫ Код VBA надо оформлять тегами "Код VBA", а не тегами "Формула"


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (airwaves18244)
Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

За транспонирование отвечает функция листа Application.Transpose()
Уберите её

ЗЫ Код VBA надо оформлять тегами "Код VBA", а не тегами "Формула"

Автор - Serge_007
Дата добавления - 26.12.2012 в 12:25
airwaves18244 Дата: Среда, 26.12.2012, 12:56 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Serge_007, нашел в тегах только [code], его и вставил.

При удалении Application.Transpose() код не выполняется.

Во вложении в первом приближении решение исходной задачи по кнопке "Заполнить таблицу"
К сообщению приложен файл: 4670149.xls (87.0 Kb)


Сообщение отредактировал airwaves18244 - Среда, 26.12.2012, 13:30
 
Ответить
СообщениеSerge_007, нашел в тегах только [code], его и вставил.

При удалении Application.Transpose() код не выполняется.

Во вложении в первом приближении решение исходной задачи по кнопке "Заполнить таблицу"

Автор - airwaves18244
Дата добавления - 26.12.2012 в 12:56
AlexMatashev Дата: Среда, 26.12.2012, 13:39 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 2 ±
Замечаний: 0% ±

Цитата (airwaves18244)
Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

Может пригодиться этот макрос транспонирования данных (на 17 столбцов - можете поменять на свои 7).
К сообщению приложен файл: --_____17_.xls (37.5 Kb)
 
Ответить
Сообщение
Цитата (airwaves18244)
Она выводит уникальные значения из массива транспонируя их в столбец. А как вывести в строку?

Может пригодиться этот макрос транспонирования данных (на 17 столбцов - можете поменять на свои 7).

Автор - AlexMatashev
Дата добавления - 26.12.2012 в 13:39
RAN Дата: Среда, 26.12.2012, 17:44 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Range(Sel.Address).Resize(,Uniq.Count) = Uniq.keys
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Range(Sel.Address).Resize(,Uniq.Count) = Uniq.keys
[/vba]

Автор - RAN
Дата добавления - 26.12.2012 в 17:44
airwaves18244 Дата: Четверг, 10.01.2013, 10:03 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Всем добрый день! Подскажите пожалуйста, почему может возникать ошибка в макросе примера при транспонировании столбца Z10:Z14 в строку в ячейке AB9 через специальную вставку?

Из макроса примера, строки по транспонированию:

[vba]
Код

Set RngSortU = Range("Z10", Cells(Rows.Count, 26).End(xlUp))

      ActiveWorkbook.Worksheets("Summary").Sort.SortFields.clear
      ActiveWorkbook.Worksheets("Summary").Sort.SortFields.Add Key:=RngSortU, _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("Summary").Sort
          .SetRange RngSortU
          .Header = xlGuess
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
      End With
     
RngSortU.Copy
Cells(9, 28).PasteSpecial Paste:=xlAll, Operation:=xlNone, Transpose:=True
[/vba]
К сообщению приложен файл: 4670149-1-.xls (88.0 Kb)


Сообщение отредактировал airwaves18244 - Четверг, 10.01.2013, 10:06
 
Ответить
СообщениеВсем добрый день! Подскажите пожалуйста, почему может возникать ошибка в макросе примера при транспонировании столбца Z10:Z14 в строку в ячейке AB9 через специальную вставку?

Из макроса примера, строки по транспонированию:

[vba]
Код

Set RngSortU = Range("Z10", Cells(Rows.Count, 26).End(xlUp))

      ActiveWorkbook.Worksheets("Summary").Sort.SortFields.clear
      ActiveWorkbook.Worksheets("Summary").Sort.SortFields.Add Key:=RngSortU, _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("Summary").Sort
          .SetRange RngSortU
          .Header = xlGuess
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
      End With
     
RngSortU.Copy
Cells(9, 28).PasteSpecial Paste:=xlAll, Operation:=xlNone, Transpose:=True
[/vba]

Автор - airwaves18244
Дата добавления - 10.01.2013 в 10:03
RAN Дата: Четверг, 10.01.2013, 13:38 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Потому, что без макроса тоже не вставляется. Не пробовали?
Нравятся таблицы? Нравятся проблемы! smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПотому, что без макроса тоже не вставляется. Не пробовали?
Нравятся таблицы? Нравятся проблемы! smile

Автор - RAN
Дата добавления - 10.01.2013 в 13:38
airwaves18244 Дата: Четверг, 10.01.2013, 13:47 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

RAN, Пробовал)
Проблема в том, что то вставляется, то нет. В чем подвох не понятно.
Изменил таблицу, вставляется (см. пример). Чертовщина))
К сообщению приложен файл: 4670149-2222-.xls (90.5 Kb)
 
Ответить
СообщениеRAN, Пробовал)
Проблема в том, что то вставляется, то нет. В чем подвох не понятно.
Изменил таблицу, вставляется (см. пример). Чертовщина))

Автор - airwaves18244
Дата добавления - 10.01.2013 в 13:47
airwaves18244 Дата: Четверг, 10.01.2013, 13:49 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

RAN, А как прикрутить вашу строку, чтобы уйти от транспонирования через Вставку?
Цитата (RAN)
Range(Sel.Address).Resize(,Uniq.Count) = Uniq.keys
 
Ответить
СообщениеRAN, А как прикрутить вашу строку, чтобы уйти от транспонирования через Вставку?
Цитата (RAN)
Range(Sel.Address).Resize(,Uniq.Count) = Uniq.keys

Автор - airwaves18244
Дата добавления - 10.01.2013 в 13:49
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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