Помогите, пожалуйста, решить задачу: Есть массив данных по использованию запчастей за месяц на листе "Сводная". Цель раскидать наименование и количество по листам соответствующим каждой единице техники. Также хочется на листе "Сводная" иметь возможность выбрать дату, которая автоматом перенесется в форму акта. Насколько я понимаю, стандартными инструментами эксель этого не добиться, поэтому пишу в раздел по VBA.
Буду очень благодарен за помощь!
Добрый день.
Помогите, пожалуйста, решить задачу: Есть массив данных по использованию запчастей за месяц на листе "Сводная". Цель раскидать наименование и количество по листам соответствующим каждой единице техники. Также хочется на листе "Сводная" иметь возможность выбрать дату, которая автоматом перенесется в форму акта. Насколько я понимаю, стандартными инструментами эксель этого не добиться, поэтому пишу в раздел по VBA.
стандартными инструментами эксель этого не добиться
Ну почему же? Сделал на листе "ВАЗ Н 763 ОС 178" Формулы в серых ячейках Очень важно следить, чтобы название листов соответствовало названиям в таблице (в таблице допускаются лишние пробелы, что мы, собственно, в файле и наблюдаем)
стандартными инструментами эксель этого не добиться
Ну почему же? Сделал на листе "ВАЗ Н 763 ОС 178" Формулы в серых ячейках Очень важно следить, чтобы название листов соответствовало названиям в таблице (в таблице допускаются лишние пробелы, что мы, собственно, в файле и наблюдаем)_Boroda_
_Boroda_, не могу разобраться, как увеличить диапазон обрабатываемых строк вниз? Сейчас он ограничен 66 строкой. И можете еще добавить перенос в акт Ед.изм. из сводной? Заранее спасибо!
_Boroda_, не могу разобраться, как увеличить диапазон обрабатываемых строк вниз? Сейчас он ограничен 66 строкой. И можете еще добавить перенос в акт Ед.изм. из сводной? Заранее спасибо!ViolentJ
Dim lFCol As Long, lLCol As Long, I As Long Dim sChiefMechanical As String, sDate As String, sHero As String Dim shBl As Worksheet, shOw As Worksheet, shAnotherHero As Worksheet Dim r As Range Sub EmptySpaces_InExSu() Call onAdnOn For I = lFCol To lLCol Call ShowMustGoOn(I) 'скрыть столбцы кроме текущего Call WhatWeAreLooking4(I) Call WhateverHappens 'Stop Next End Sub Sub WhateverHappens() sHero = shOw.Cells(2, I) 'модель авто shBl.Copy after:=shBl Set shAnotherHero = ThisWorkbook.ActiveSheet shOw.Cells(2, 2).CurrentRegion.Copy _ shAnotherHero.Cells(14, 2) With shAnotherHero .Rows("14:15").Delete .Range("c11").Value = sHero .Range("b9").Value = "за " & sDate lRowCM = .Range("b13").CurrentRegion.Rows.Count _ + 2 + 13 .Cells(lRowCM, 2) = sChiefMechanical .Name = sHero End With End Sub Sub onAdnOn() Set shOw = ThisWorkbook.Worksheets("Сводная") With shOw .Cells.MergeCells = False .Columns(1).Hidden = True sDate = .Range("d1") lFCol = 4: lLCol = .Range("b3").CurrentRegion.Columns.Count End With Set shBl = ThisWorkbook.Worksheets("Шаблон Акта") sChiefMechanical = "Гл. механик ________________________ /Иванов А.В./" End Sub Sub WhatWeAreLooking4(ByVal CurCol As Long) Set r = shOw.Cells(2, CurCol).CurrentRegion r.AutoFilter Field:=CurCol, Criteria1:="<>" End Sub Sub ShowMustGoOn(ByVal CurCol As Long) 'скрыть столбцы кроме текущего shOw.Cells.EntireColumn.Hidden = False If shOw.FilterMode Then shOw.ShowAllData For j = lFCol To lLCol If j <> CurCol Then shOw.Columns(j).Hidden = True Next End Sub
[/vba]
[vba]
Код
Dim lFCol As Long, lLCol As Long, I As Long Dim sChiefMechanical As String, sDate As String, sHero As String Dim shBl As Worksheet, shOw As Worksheet, shAnotherHero As Worksheet Dim r As Range Sub EmptySpaces_InExSu() Call onAdnOn For I = lFCol To lLCol Call ShowMustGoOn(I) 'скрыть столбцы кроме текущего Call WhatWeAreLooking4(I) Call WhateverHappens 'Stop Next End Sub Sub WhateverHappens() sHero = shOw.Cells(2, I) 'модель авто shBl.Copy after:=shBl Set shAnotherHero = ThisWorkbook.ActiveSheet shOw.Cells(2, 2).CurrentRegion.Copy _ shAnotherHero.Cells(14, 2) With shAnotherHero .Rows("14:15").Delete .Range("c11").Value = sHero .Range("b9").Value = "за " & sDate lRowCM = .Range("b13").CurrentRegion.Rows.Count _ + 2 + 13 .Cells(lRowCM, 2) = sChiefMechanical .Name = sHero End With End Sub Sub onAdnOn() Set shOw = ThisWorkbook.Worksheets("Сводная") With shOw .Cells.MergeCells = False .Columns(1).Hidden = True sDate = .Range("d1") lFCol = 4: lLCol = .Range("b3").CurrentRegion.Columns.Count End With Set shBl = ThisWorkbook.Worksheets("Шаблон Акта") sChiefMechanical = "Гл. механик ________________________ /Иванов А.В./" End Sub Sub WhatWeAreLooking4(ByVal CurCol As Long) Set r = shOw.Cells(2, CurCol).CurrentRegion r.AutoFilter Field:=CurCol, Criteria1:="<>" End Sub Sub ShowMustGoOn(ByVal CurCol As Long) 'скрыть столбцы кроме текущего shOw.Cells.EntireColumn.Hidden = False If shOw.FilterMode Then shOw.ShowAllData For j = lFCol To lLCol If j <> CurCol Then shOw.Columns(j).Hidden = True Next End Sub
Вы правы, делать и объяснять это разные умения. Легко обучать солдата - вначале обычно боец понимает, что он мало что понимает. Так как мне Ваш уровень в информатике неизвестен, попробуйте в ютубе найти "Study Prof", у него есть плейлист "Учимся программировать и работать в Microsoft Excel". Пойдука и сам посмотрю ...
Вы правы, делать и объяснять это разные умения. Легко обучать солдата - вначале обычно боец понимает, что он мало что понимает. Так как мне Ваш уровень в информатике неизвестен, попробуйте в ютубе найти "Study Prof", у него есть плейлист "Учимся программировать и работать в Microsoft Excel". Пойдука и сам посмотрю ... InExSu
Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac