Dim i As Long For i = 1 To Sheets.Count - 3 Call ttt2(Sheets(i), shTrt) Next
End Sub
[/vba]
[vba]
Код
Private Sub ttt2(shSrc As Excel.Worksheet, shTrt As Excel.Worksheet)
Dim arrE() Dim strType As String Dim lngStart As Long, lngEnd As Long, lngRowsCount As Long Dim lngLastRow As Long Dim i As Long strType = shTrt.Name arrE = shSrc.Range("E1:E" & shSrc.UsedRange.Row + shSrc.UsedRange.Rows.Count - 1).Value For i = 1 To UBound(arrE) If CStr(arrE(i, 1)) = strType Then lngStart = i Exit For End If Next If lngStart = 0 Then Exit Sub End If i = lngStart + 1 Do If CStr(arrE(i, 1)) <> strType Or i > UBound(arrE) Then lngEnd = i - 1 Exit Do Else i = i + 1 End If Loop lngRowsCount = lngEnd - lngStart + 1 lngLastRow = shTrt.UsedRange.Row + shTrt.UsedRange.Rows.Count shTrt.Cells(lngLastRow, "A").Resize(lngRowsCount, 20).Value = _ shSrc.Cells(lngStart, "D").Resize(lngRowsCount, 20).Value
End Sub
[/vba] Я вроде разобрался куда прописывать и корректировать его (правда как его создавать еще нет), мне не нужно вот тут прописывать листы:???? [vba]
Код
Private Sub ttt1(shTrt As Excel.Worksheet)
Dim i As Long For i = 1 To Sheets.Count - 3 Call ttt2(Sheets(i), shTrt) Next
[/vba] [moder]Оформляйте коды тегами, кнопка #[/moder]
Dim i As Long For i = 1 To Sheets.Count - 3 Call ttt2(Sheets(i), shTrt) Next
End Sub
[/vba]
[vba]
Код
Private Sub ttt2(shSrc As Excel.Worksheet, shTrt As Excel.Worksheet)
Dim arrE() Dim strType As String Dim lngStart As Long, lngEnd As Long, lngRowsCount As Long Dim lngLastRow As Long Dim i As Long strType = shTrt.Name arrE = shSrc.Range("E1:E" & shSrc.UsedRange.Row + shSrc.UsedRange.Rows.Count - 1).Value For i = 1 To UBound(arrE) If CStr(arrE(i, 1)) = strType Then lngStart = i Exit For End If Next If lngStart = 0 Then Exit Sub End If i = lngStart + 1 Do If CStr(arrE(i, 1)) <> strType Or i > UBound(arrE) Then lngEnd = i - 1 Exit Do Else i = i + 1 End If Loop lngRowsCount = lngEnd - lngStart + 1 lngLastRow = shTrt.UsedRange.Row + shTrt.UsedRange.Rows.Count shTrt.Cells(lngLastRow, "A").Resize(lngRowsCount, 20).Value = _ shSrc.Cells(lngStart, "D").Resize(lngRowsCount, 20).Value
End Sub
[/vba] Я вроде разобрался куда прописывать и корректировать его (правда как его создавать еще нет), мне не нужно вот тут прописывать листы:???? [vba]
Код
Private Sub ttt1(shTrt As Excel.Worksheet)
Dim i As Long For i = 1 To Sheets.Count - 3 Call ttt2(Sheets(i), shTrt) Next
[/vba] [moder]Оформляйте коды тегами, кнопка #[/moder]lebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал Pelena - Пятница, 06.03.2015, 07:45
у меня вроде все получилось ЕСТЬ вопрос. Почему когда я каждый раз нажимая МАКРОС он добавляет те же самые значения (((( как бы дублируя. Можно ли сделать так чтоб он не дублировал ???? файл прикладываю
у меня вроде все получилось ЕСТЬ вопрос. Почему когда я каждый раз нажимая МАКРОС он добавляет те же самые значения (((( как бы дублируя. Можно ли сделать так чтоб он не дублировал ???? файл прикладываюlebensvoll
нужно вот что выяснить(я об этом вчера писал) -как макросу понять,какие листы являются листами-датами,а какие листы- целевые листы.
так как вы можете добавить листы в будущем,то строго в макросе нельзя указать листы. я предложил такой вариант:макрос ищет первый целевой лист и все листы,которые слева,макрос будет считать листами -датами. те листы,которые спрва, -целевые листы,но кроме последнего.
но вы можете предложить свой способ. например,макрос может фиксировано за листы-даты считать листы 1 - 31. затем прямо в макрос можно записать целевые листы. в этом случае вы можете добавлять в книгу какие-то другие листы,не связанные с макросом. сейчас у вас такой лист последний(вы писали об этом,в выложенном в самом начале файле не было его,а остальные файлы я не смотрел,т.к.у меня был к вам другой вопрос)
нужно вот что выяснить(я об этом вчера писал) -как макросу понять,какие листы являются листами-датами,а какие листы- целевые листы.
так как вы можете добавить листы в будущем,то строго в макросе нельзя указать листы. я предложил такой вариант:макрос ищет первый целевой лист и все листы,которые слева,макрос будет считать листами -датами. те листы,которые спрва, -целевые листы,но кроме последнего.
но вы можете предложить свой способ. например,макрос может фиксировано за листы-даты считать листы 1 - 31. затем прямо в макрос можно записать целевые листы. в этом случае вы можете добавлять в книгу какие-то другие листы,не связанные с макросом. сейчас у вас такой лист последний(вы писали об этом,в выложенном в самом начале файле не было его,а остальные файлы я не смотрел,т.к.у меня был к вам другой вопрос)Karataev
Karataev, посмотрите пожалуйста вложенный файл в предыдущем сообщении (((( я правильно прописал листы??? и вопрос еще вот какой: Почему когда я каждый раз нажимая МАКРОС он добавляет те же самые значения (((( как бы дублируя.
Karataev, посмотрите пожалуйста вложенный файл в предыдущем сообщении (((( я правильно прописал листы??? и вопрос еще вот какой: Почему когда я каждый раз нажимая МАКРОС он добавляет те же самые значения (((( как бы дублируя.lebensvoll
долго порывался сделать эту задачку с помощью Power Query..., вчера сел и вроде что-то получилось для работы должна быть установлена и включена надстройка MS Power Query, в книге должны присутствовать листы: "!" (все листы с исходными данными должны располагаться перед ним, и на этом листе расположена таблица, из которой берется имя файла для запроса),
"Шаблон" (лист-шаблон, на нем сделал 2 сводные, подключенные к подключению, сформированному запросом Power Query),
"Срезы" (Сюда помещаются срезы, которые формируются при выполнении макроса)
при нажатии на кнопку запрос собирает все данные с листов, расположенных до листа "!" и отдает их сводным на листе "Шаблон" и на основании элементов из поля "Класс бетонной смеси" формируются листы по каждому классу, предварительно удалив все листы между "!" и "Шаблон" при установке фильтра в любой сводной на этих листах, он распространяется на вторую сводную на листе
данные в сводных отображаются только из последнего сохранения файла, т.е. при обновлении сводной нужно сохранить файл, при обновлении любой сводной все остальные обновляются автоматически
Upd. Заменил файлы, была небольшая ошибочка
долго порывался сделать эту задачку с помощью Power Query..., вчера сел и вроде что-то получилось для работы должна быть установлена и включена надстройка MS Power Query, в книге должны присутствовать листы: "!" (все листы с исходными данными должны располагаться перед ним, и на этом листе расположена таблица, из которой берется имя файла для запроса),
"Шаблон" (лист-шаблон, на нем сделал 2 сводные, подключенные к подключению, сформированному запросом Power Query),
"Срезы" (Сюда помещаются срезы, которые формируются при выполнении макроса)
при нажатии на кнопку запрос собирает все данные с листов, расположенных до листа "!" и отдает их сводным на листе "Шаблон" и на основании элементов из поля "Класс бетонной смеси" формируются листы по каждому классу, предварительно удалив все листы между "!" и "Шаблон" при установке фильтра в любой сводной на этих листах, он распространяется на вторую сводную на листе
данные в сводных отображаются только из последнего сохранения файла, т.е. при обновлении сводной нужно сохранить файл, при обновлении любой сводной все остальные обновляются автоматически
Upd. Заменил файлы, была небольшая ошибочкаkrosav4ig
krosav4ig, Kuzmich, Karataev, спасибо огромное всем вам!!!! внедрил журнал с макросами в наш коллектив и тут при заполнении данных за январь, февраль, март месяц ВОЗНИК ВОПРОС и сразу же делема (((( МОГУ ЛИ Я ОБРАТИТЬСЯ К ВАМ ЕЩЕ РАЗ ЗА ПОМОЩЬЮ (((( Во вложенном файле имеются два файла. В файл Данные на 28 сутки в столбец "С-Дата" "D- шифр" "Е- Ri"должны подтягиваться данные содержащие значение 28 по столбцу "Н" с файла Журнала январь 2015 с листа В25 столбца "А- дата формирования" "Н-возраст, сут" "R- средняя прочность серии образцов, МПа". Если же это не обременит ВАС, не могли бы вы помочь в очередной раз. ПОЖАЛУЙСТА!!! Заранее спасибо [moder]
krosav4ig, Kuzmich, Karataev, спасибо огромное всем вам!!!! внедрил журнал с макросами в наш коллектив и тут при заполнении данных за январь, февраль, март месяц ВОЗНИК ВОПРОС и сразу же делема (((( МОГУ ЛИ Я ОБРАТИТЬСЯ К ВАМ ЕЩЕ РАЗ ЗА ПОМОЩЬЮ (((( Во вложенном файле имеются два файла. В файл Данные на 28 сутки в столбец "С-Дата" "D- шифр" "Е- Ri"должны подтягиваться данные содержащие значение 28 по столбцу "Н" с файла Журнала январь 2015 с листа В25 столбца "А- дата формирования" "Н-возраст, сут" "R- средняя прочность серии образцов, МПа". Если же это не обременит ВАС, не могли бы вы помочь в очередной раз. ПОЖАЛУЙСТА!!! Заранее спасибо [moder]