Добрый день! Есть списки продукции различающиеся в разных месяцах. Как сделать один общий перечень на листе СВОД (в настоящее время просто руками выбирал и оставил только для примера - что на выходе должно получиться), содержащий полный список материалов и без их повторений? Возможно не сложная задача, но не получается найти какой то простой ответ.
Добрый день! Есть списки продукции различающиеся в разных месяцах. Как сделать один общий перечень на листе СВОД (в настоящее время просто руками выбирал и оставил только для примера - что на выходе должно получиться), содержащий полный список материалов и без их повторений? Возможно не сложная задача, но не получается найти какой то простой ответ.Neonyc
Или собрать данные формулами - пашет и при добавлении листов, но тяжеловастенько UPD файл перезалил - чуть допилил И листы лучше назвать Октябрь2015, Ноябрь2015 и т.д. - тогда в сводную они в хронологии пойдут
Или собрать данные формулами - пашет и при добавлении листов, но тяжеловастенько UPD файл перезалил - чуть допилил И листы лучше назвать Октябрь2015, Ноябрь2015 и т.д. - тогда в сводную они в хронологии пойдутbuchlotnik
buchlotnik, для моих познаний - сильно-ниже-среднего это не просто ТЯЖЕЛОВАСТЕНЬКО, а всё равно что попытка расшифровать секретный код. По честному пытался сутки - мозг чуть не закипел. Спасибо, в любом случае!!! Продолжу попытки понять и осмыслить. И опять таки хотелось бы более оперативный способ - на пример как предложенный Ув. Boroda.
_Boroda_, Очень-очень похоже на то что нужно....... "несколько диапазонов консолидации" - это ведь с помощью мастера сводных таблиц? На работе 2016 - там вместо этого Мастера можно поставить галку "анализ нескольких таблиц" - с её помощью что ли? ...... Если до, то киньте, плз ссылкой как ей пользоваться в 16-м Excel
buchlotnik, для моих познаний - сильно-ниже-среднего это не просто ТЯЖЕЛОВАСТЕНЬКО, а всё равно что попытка расшифровать секретный код. По честному пытался сутки - мозг чуть не закипел. Спасибо, в любом случае!!! Продолжу попытки понять и осмыслить. И опять таки хотелось бы более оперативный способ - на пример как предложенный Ув. Boroda.
_Boroda_, Очень-очень похоже на то что нужно....... "несколько диапазонов консолидации" - это ведь с помощью мастера сводных таблиц? На работе 2016 - там вместо этого Мастера можно поставить галку "анализ нескольких таблиц" - с её помощью что ли? ...... Если до, то киньте, плз ссылкой как ей пользоваться в 16-м ExcelNeonyc
Зайдите в настройку панели быстрого доступа (правой мышой на ленту - настройка ПБД) - "Команды не на ленте" и вытащите оттуда в ПБД кнопку "Мастер сводных таблиц и диаграмм"
Зайдите в настройку панели быстрого доступа (правой мышой на ленту - настройка ПБД) - "Команды не на ленте" и вытащите оттуда в ПБД кнопку "Мастер сводных таблиц и диаграмм"_Boroda_
Public Sub getSpisok() Dim oDict, arrKey Dim i As Integer, j%, rowLast% Const outList As String = "СВОД"
Set oDict = CreateObject("Scripting.Dictionary") oDict.CompareMode = 1 For i = 1 To Worksheets.Count If Worksheets(i).Name <> outList Then With Worksheets(i) rowLast = .Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To rowLast If .Cells(j, 1).Value <> "" Then If Not oDict.exists(.Cells(j, 1).Value) Then oDict(.Cells(j, 1).Value) = 1 Else oDict(.Cells(j, 1).Value) = oDict(.Cells(j, 1).Value) + 1 'количество повторов End If End If Next j End With End If Next i arrKey = oDict.keys With Worksheets(outList) .Cells(1, 1).Select .Cells.Clear .Cells(1, 1).Resize(oDict.Count) = Application.Transpose(oDict.keys) .Cells(1, 2).Resize(oDict.Count) = Application.Transpose(oDict.items)
.UsedRange.Select Call setFormat .Cells(1, 1).Select End With End Sub
Private Sub setFormat() ' Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Font .Name = "Times New Roman" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Columns("A:A").ColumnWidth = 80 End Sub
[/vba]
еще макрос [vba]
Код
Option Explicit
Public Sub getSpisok() Dim oDict, arrKey Dim i As Integer, j%, rowLast% Const outList As String = "СВОД"
Set oDict = CreateObject("Scripting.Dictionary") oDict.CompareMode = 1 For i = 1 To Worksheets.Count If Worksheets(i).Name <> outList Then With Worksheets(i) rowLast = .Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To rowLast If .Cells(j, 1).Value <> "" Then If Not oDict.exists(.Cells(j, 1).Value) Then oDict(.Cells(j, 1).Value) = 1 Else oDict(.Cells(j, 1).Value) = oDict(.Cells(j, 1).Value) + 1 'количество повторов End If End If Next j End With End If Next i arrKey = oDict.keys With Worksheets(outList) .Cells(1, 1).Select .Cells.Clear .Cells(1, 1).Resize(oDict.Count) = Application.Transpose(oDict.keys) .Cells(1, 2).Resize(oDict.Count) = Application.Transpose(oDict.items)
.UsedRange.Select Call setFormat .Cells(1, 1).Select End With End Sub
Private Sub setFormat() ' Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Font .Name = "Times New Roman" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Columns("A:A").ColumnWidth = 80 End Sub