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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос - найти лист, найти столбец, вставить значения - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Макрос - найти лист, найти столбец, вставить значения
DJ_Marker_MC Дата: Понедельник, 29.10.2012, 15:48 | Сообщение № 1
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Всем привет. Ребята, помогите пожалуйста макросом.
Есть два документа, один из них "МЕСЯЦ" в который будут данные попадать с 40 разных документов (40 регионов) за 1 месяц. Второй "ОБЩИЙ" где по листочкам собраны все регионы на разных листах и там данные раскиданы по месяцам на каждом листе региона.
Нужен макрос который будет искать в документе ОБЩИЙ лист с именем как в документе МЕСЯЦ в строке1 подписаны регионы, потом найдя нужны лист, будет искать дату которая указана в МЕСЯЦ в А1, и вставлять ЗНАЧЕНИЯ согласно названиям статей, при этом проверять их на совпадение по статьям (столбик А), для примера в документе ОБЩИЙ на листе РЕГИОН5 выделил оранжевым "статья4-5" которой нет во всех остальных листах, вот в при вставке в этот лист нужно чтоб если этой статьи нет в документе МЕСЯЦ то её пропустить, а все остальные данные вставить.
Файлы в приложении...
Заранее благодарен за помощь!
К сообщению приложен файл: 9813433.xlsx (9.0 Kb) · 7278119.xlsx (11.2 Kb)
 
Ответить
СообщениеВсем привет. Ребята, помогите пожалуйста макросом.
Есть два документа, один из них "МЕСЯЦ" в который будут данные попадать с 40 разных документов (40 регионов) за 1 месяц. Второй "ОБЩИЙ" где по листочкам собраны все регионы на разных листах и там данные раскиданы по месяцам на каждом листе региона.
Нужен макрос который будет искать в документе ОБЩИЙ лист с именем как в документе МЕСЯЦ в строке1 подписаны регионы, потом найдя нужны лист, будет искать дату которая указана в МЕСЯЦ в А1, и вставлять ЗНАЧЕНИЯ согласно названиям статей, при этом проверять их на совпадение по статьям (столбик А), для примера в документе ОБЩИЙ на листе РЕГИОН5 выделил оранжевым "статья4-5" которой нет во всех остальных листах, вот в при вставке в этот лист нужно чтоб если этой статьи нет в документе МЕСЯЦ то её пропустить, а все остальные данные вставить.
Файлы в приложении...
Заранее благодарен за помощь!

Автор - DJ_Marker_MC
Дата добавления - 29.10.2012 в 15:48
nilem Дата: Понедельник, 29.10.2012, 18:14 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Привет, marker_mc
а если формулкой (в В2 лист1 файл "Месяц")
Code
=ВПР($A2;ДВССЫЛ("[Общий.xlsx]"&B$1&"!A1:M11");ПОИСКПОЗ($A$1;ДВССЫЛ("[Общий.xlsx]"&B$1&"!A1:M1");0))

при условии, что оба файла открыты


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Понедельник, 29.10.2012, 18:15
 
Ответить
СообщениеПривет, marker_mc
а если формулкой (в В2 лист1 файл "Месяц")
Code
=ВПР($A2;ДВССЫЛ("[Общий.xlsx]"&B$1&"!A1:M11");ПОИСКПОЗ($A$1;ДВССЫЛ("[Общий.xlsx]"&B$1&"!A1:M1");0))

при условии, что оба файла открыты

Автор - nilem
Дата добавления - 29.10.2012 в 18:14
DJ_Marker_MC Дата: Понедельник, 29.10.2012, 19:06 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
формулкой и я могу)))) тут именно макрос нужен.
 
Ответить
Сообщениеформулкой и я могу)))) тут именно макрос нужен.

Автор - DJ_Marker_MC
Дата добавления - 29.10.2012 в 19:06
nilem Дата: Понедельник, 29.10.2012, 20:07 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Экий Вы smile
Вот макросец, положите его в стандартный модуль книги "Месяц". Оба файла д.б. открыты
[vba]
Code
Sub ertert()
Dim j&, r$, rng As Range: Set rng = Range("A1").CurrentRegion
On Error Resume Next
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         r = "[Общий.xlsx]" & rng(1, j).Value & "!"
         With .Sheets(rng(1, j).Value)
             With .Range("A1").CurrentRegion
                 rng.Columns(j).Offset(1).Resize(rng.Rows.Count - 1).FormulaR1C1 = _
                 "=VLOOKUP(RC[-" & j - 1 & "]," & r & .Address(, , xlR1C1) & _
                 ",MATCH(R1C1," & r & .Rows(1).Address(, , xlR1C1) & ",0),0)"
             End With
         End With
     Next j
End With
With rng
     .SpecialCells(xlCellTypeFormulas, 16).ClearContents: .Value = .Value
End With
End Sub
[/vba]
так проще? smile


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеЭкий Вы smile
Вот макросец, положите его в стандартный модуль книги "Месяц". Оба файла д.б. открыты
[vba]
Code
Sub ertert()
Dim j&, r$, rng As Range: Set rng = Range("A1").CurrentRegion
On Error Resume Next
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         r = "[Общий.xlsx]" & rng(1, j).Value & "!"
         With .Sheets(rng(1, j).Value)
             With .Range("A1").CurrentRegion
                 rng.Columns(j).Offset(1).Resize(rng.Rows.Count - 1).FormulaR1C1 = _
                 "=VLOOKUP(RC[-" & j - 1 & "]," & r & .Address(, , xlR1C1) & _
                 ",MATCH(R1C1," & r & .Rows(1).Address(, , xlR1C1) & ",0),0)"
             End With
         End With
     Next j
End With
With rng
     .SpecialCells(xlCellTypeFormulas, 16).ClearContents: .Value = .Value
End With
End Sub
[/vba]
так проще? smile

Автор - nilem
Дата добавления - 29.10.2012 в 20:07
DJ_Marker_MC Дата: Вторник, 30.10.2012, 13:27 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
что то не то. Открыл два файла, в файле месяц создал Модуль, туда вкинул Ваш код, потом запускаю его, но он ничего никуда не разносит, а только превращает в "0" все значения в файле месяц.
 
Ответить
Сообщениечто то не то. Открыл два файла, в файле месяц создал Модуль, туда вкинул Ваш код, потом запускаю его, но он ничего никуда не разносит, а только превращает в "0" все значения в файле месяц.

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 13:27
nilem Дата: Вторник, 30.10.2012, 16:44 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Не верю. Вот Ваши файлы, открывайте оба, жмите зеленую кнопку в файле "месяц".
К сообщению приложен файл: 7948167.zip (27.5 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеНе верю. Вот Ваши файлы, открывайте оба, жмите зеленую кнопку в файле "месяц".

Автор - nilem
Дата добавления - 30.10.2012 в 16:44
Hugo Дата: Вторник, 30.10.2012, 17:02 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Как вариант алгоритма - будет эффективен, если один файл "Общий" и много файлов "МЕСЯЦ", хотя и содним тоже вполне можно использовать, т.к. хоть и есть лишние действия, но зато простой код.
Значит так,
1. цикл по всем листам "Общий", данные каждого через массив (чтоб быстрее) заносим в словарь.
Ключ регион|статья|дата, item значение ячейки.
2. аналогичный цикл по одному листу "МЕСЯЦ" - но теперь уже из словаря извлекаем данные по ключу регион|статья|дата.
3. естественно те статьи, которых нет в "МЕСЯЦ"е, останутся неизвлечёнными. Но если нужно такие выловить - это несложно: ставим в словаре пометки найденным, в конце циклом делаем ревизию этих пометок.

Если файлов "МЕСЯЦ" много, то будет эффективно, т.к. можно один раз набрать данные в словарь, затем заполнить в цикле все "МЕСЯЦ"ы.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеКак вариант алгоритма - будет эффективен, если один файл "Общий" и много файлов "МЕСЯЦ", хотя и содним тоже вполне можно использовать, т.к. хоть и есть лишние действия, но зато простой код.
Значит так,
1. цикл по всем листам "Общий", данные каждого через массив (чтоб быстрее) заносим в словарь.
Ключ регион|статья|дата, item значение ячейки.
2. аналогичный цикл по одному листу "МЕСЯЦ" - но теперь уже из словаря извлекаем данные по ключу регион|статья|дата.
3. естественно те статьи, которых нет в "МЕСЯЦ"е, останутся неизвлечёнными. Но если нужно такие выловить - это несложно: ставим в словаре пометки найденным, в конце циклом делаем ревизию этих пометок.

Если файлов "МЕСЯЦ" много, то будет эффективно, т.к. можно один раз набрать данные в словарь, затем заполнить в цикле все "МЕСЯЦ"ы.

Автор - Hugo
Дата добавления - 30.10.2012 в 17:02
DJ_Marker_MC Дата: Вторник, 30.10.2012, 17:05 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
ааай))) не так... Вы немножко неправильно поняли))) мне нужно наоборот что с месяца разносило в общий по листам находя нужную дату и нужную строку. А у вас оно ищет в общем сводит в месяц))))
 
Ответить
Сообщениеааай))) не так... Вы немножко неправильно поняли))) мне нужно наоборот что с месяца разносило в общий по листам находя нужную дату и нужную строку. А у вас оно ищет в общем сводит в месяц))))

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 17:05
DJ_Marker_MC Дата: Вторник, 30.10.2012, 17:15 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Hugo, если честно совсем ничего не понял. Файл месяц 1 и файл общий тоже один. Просто в файл месяц данные будут собираться формулой с 40-50 однотипных документов за один месяц, после того как файл месяц будет готов, нужно разнести с этого файла в общий в нужны листы и в нужный месяц значения макросом, чтоб не делать это вручную - "скопировать, вставить значения"
 
Ответить
СообщениеHugo, если честно совсем ничего не понял. Файл месяц 1 и файл общий тоже один. Просто в файл месяц данные будут собираться формулой с 40-50 однотипных документов за один месяц, после того как файл месяц будет готов, нужно разнести с этого файла в общий в нужны листы и в нужный месяц значения макросом, чтоб не делать это вручную - "скопировать, вставить значения"

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 17:15
Hugo Дата: Вторник, 30.10.2012, 17:29 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Ну раз не поняли, то и ладно... Решение уже есть, его думаю несложно повернуть наоборот.
Мой алгоритм тоже без проблем переворачиватеся - собираем в словарь циклом по ячейкам одного листа, раскладываем из словаря циклом по многим листам.
но вот писать код некогда, извините.
Да и решение уже есть, ничуть не хуже, просто другое.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу раз не поняли, то и ладно... Решение уже есть, его думаю несложно повернуть наоборот.
Мой алгоритм тоже без проблем переворачиватеся - собираем в словарь циклом по ячейкам одного листа, раскладываем из словаря циклом по многим листам.
но вот писать код некогда, извините.
Да и решение уже есть, ничуть не хуже, просто другое.

Автор - Hugo
Дата добавления - 30.10.2012 в 17:29
DJ_Marker_MC Дата: Вторник, 30.10.2012, 17:34 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Hugo, если для Вас это НИЧЕГО СЛОЖНОГО, то это вовсе не значит что для других также. Я не умею писать макросы к сожалению и для меня развернуть этот код в обратном порядке - проблема, если бы для меня это не было проблемой я б не просил помощи, но перед тем как попросить тут помощь я перерыл гугл и только потом обратился за помощью. Надеюсь найдутся добрые люди.


Сообщение отредактировал marker_mc - Вторник, 30.10.2012, 17:35
 
Ответить
СообщениеHugo, если для Вас это НИЧЕГО СЛОЖНОГО, то это вовсе не значит что для других также. Я не умею писать макросы к сожалению и для меня развернуть этот код в обратном порядке - проблема, если бы для меня это не было проблемой я б не просил помощи, но перед тем как попросить тут помощь я перерыл гугл и только потом обратился за помощью. Надеюсь найдутся добрые люди.

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 17:34
Hugo Дата: Вторник, 30.10.2012, 17:47 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Ну я ведь не заставляю Вас писать код smile
Я дал совет/идею/направление, если бы сидел без дела - написал бы код.
Может кто другой реализует в качестве тренировки или от скуки.

Ну или считайте, что это я для себя памятку написал, как делать - чтоб потом, когда будет время, заново не выдумывать smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу я ведь не заставляю Вас писать код smile
Я дал совет/идею/направление, если бы сидел без дела - написал бы код.
Может кто другой реализует в качестве тренировки или от скуки.

Ну или считайте, что это я для себя памятку написал, как делать - чтоб потом, когда будет время, заново не выдумывать smile

Автор - Hugo
Дата добавления - 30.10.2012 в 17:47
DJ_Marker_MC Дата: Вторник, 30.10.2012, 17:54 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Ребята, помогите развернуть код в обратном направлении, мне нужно так как сделал nilem только нужно не собирать в документ МЕСЯЦ, а разносить с МЕСЯЦА в ОБЩИЙ по листам
http://www.excelworld.ru/forum/2-2671-29207-16-1351601042
 
Ответить
СообщениеРебята, помогите развернуть код в обратном направлении, мне нужно так как сделал nilem только нужно не собирать в документ МЕСЯЦ, а разносить с МЕСЯЦА в ОБЩИЙ по листам
http://www.excelworld.ru/forum/2-2671-29207-16-1351601042

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 17:54
nilem Дата: Вторник, 30.10.2012, 18:19 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Ну, marker_mc ... smile
Зеленая кнопка собирает в одном направлении, сиреневая разбивает в другом направлении. Не попутайте цвета biggrin
Оба макроса в одном стиле. Оба файла д.б. открыты
[vba]
Code
Sub rtyrty()    'сиреневая кнопка
Dim i&, j&, r$, rng As Range
Application.ScreenUpdating = False
Set rng = Range("A1").CurrentRegion
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
'или так
'r = "[месяц.xlsm]" & ActiveSheet.Name & "!" & rng.Address(, , xlR1C1)
On Error Resume Next: Err.Clear
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         With .Sheets(rng(1, j).Value)
             i = .Rows(1).Find(rng(1, 1).Value, lookat:=xlWhole).Column
             If Err = 0 Then
                 With .Range("A1").CurrentRegion
                     With .Columns(i).Offset(1).Resize(.Rows.Count - 1)
                         .FormulaR1C1 = _
                         "=IFERROR(VLOOKUP(RC[-" & i - 1 & "]," & r & "," & j & ",0),"""")"
                         .Value = .Value
                     End With
                 End With
             Else
                 Err.Clear
             End If
         End With
     Next j
End With
Application.ScreenUpdating = True
End Sub
[/vba]
Немного переделал код. Старый вариант тоже будет работать, но новый правильнее.
К сообщению приложен файл: 6545031.zip (30.2 Kb)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Вторник, 30.10.2012, 18:33
 
Ответить
СообщениеНу, marker_mc ... smile
Зеленая кнопка собирает в одном направлении, сиреневая разбивает в другом направлении. Не попутайте цвета biggrin
Оба макроса в одном стиле. Оба файла д.б. открыты
[vba]
Code
Sub rtyrty()    'сиреневая кнопка
Dim i&, j&, r$, rng As Range
Application.ScreenUpdating = False
Set rng = Range("A1").CurrentRegion
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
'или так
'r = "[месяц.xlsm]" & ActiveSheet.Name & "!" & rng.Address(, , xlR1C1)
On Error Resume Next: Err.Clear
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         With .Sheets(rng(1, j).Value)
             i = .Rows(1).Find(rng(1, 1).Value, lookat:=xlWhole).Column
             If Err = 0 Then
                 With .Range("A1").CurrentRegion
                     With .Columns(i).Offset(1).Resize(.Rows.Count - 1)
                         .FormulaR1C1 = _
                         "=IFERROR(VLOOKUP(RC[-" & i - 1 & "]," & r & "," & j & ",0),"""")"
                         .Value = .Value
                     End With
                 End With
             Else
                 Err.Clear
             End If
         End With
     Next j
End With
Application.ScreenUpdating = True
End Sub
[/vba]
Немного переделал код. Старый вариант тоже будет работать, но новый правильнее.

Автор - nilem
Дата добавления - 30.10.2012 в 18:19
DJ_Marker_MC Дата: Вторник, 30.10.2012, 18:25 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
nilem, Есссс!!!! Это именно то что нужно.... ОГРОМНЕЙШЕЕ ВАМ спасибо, я даже и зеленую кнопку возьму на вооружение)))) тоже полезная штука.

nilem, реальная структура файла в приложении.
К сообщению приложен файл: 9942023.rar (27.4 Kb)


Сообщение отредактировал marker_mc - Вторник, 30.10.2012, 19:16
 
Ответить
Сообщениеnilem, Есссс!!!! Это именно то что нужно.... ОГРОМНЕЙШЕЕ ВАМ спасибо, я даже и зеленую кнопку возьму на вооружение)))) тоже полезная штука.

nilem, реальная структура файла в приложении.

Автор - DJ_Marker_MC
Дата добавления - 30.10.2012 в 18:25
nilem Дата: Среда, 31.10.2012, 15:26 | Сообщение № 16
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
как просили:
[vba]
Code
Sub rtyrty()    'сиреневая кнопка
Dim i&, j&, r$, rng As Range
Application.ScreenUpdating = False
Set rng = Range("A1").CurrentRegion.Offset(, 1) 'смещаем rng на 1 столбец вправо, т.е. в кач-ве идентификаторов
'у нас будут не 1, 2, 3 из ст. А, а статья1, статья2 из ст. В
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
'или так
'r = "[месяц.xlsm]" & ActiveSheet.Name & "!" & rng.Address(, , xlR1C1)
On Error Resume Next
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         With .Sheets(rng(2, j).Value)    'rng(2, j).Value - это Регион1, Регион2, и т.д.
             'на листе Регион1 (2 ,3 ...) ищем дату из В1 во 2-й строке; i - это номер столбца
             i = .Rows(2).Find(rng(1, 1).Value, lookat:=xlWhole).Column
             If i > 0 Then
                 With .Range("A1").CurrentRegion
                     'в найденном столбце пишем формулу типа =ЕСЛИОШИБКА(ВПР(статья1;rng.Address;столбец;0);"")
                     With .Columns(i).Offset(2).Resize(.Rows.Count - 2)
                         .FormulaR1C1 = _
                         "=IFERROR(VLOOKUP(RC[-" & i - 2 & "]," & r & "," & j & ",0),"""")"
                         'вместо формул оставляем значения
                         .Value = .Value
                     End With
                 End With
             End If
         End With
     Next j
End With
Application.ScreenUpdating = True
End Sub
[/vba]
Найди 6 отличий и получи приз! biggrin


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениекак просили:
[vba]
Code
Sub rtyrty()    'сиреневая кнопка
Dim i&, j&, r$, rng As Range
Application.ScreenUpdating = False
Set rng = Range("A1").CurrentRegion.Offset(, 1) 'смещаем rng на 1 столбец вправо, т.е. в кач-ве идентификаторов
'у нас будут не 1, 2, 3 из ст. А, а статья1, статья2 из ст. В
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
'или так
'r = "[месяц.xlsm]" & ActiveSheet.Name & "!" & rng.Address(, , xlR1C1)
On Error Resume Next
With Workbooks("Общий.xlsx")
     For j = 2 To rng.Columns.Count
         With .Sheets(rng(2, j).Value)    'rng(2, j).Value - это Регион1, Регион2, и т.д.
             'на листе Регион1 (2 ,3 ...) ищем дату из В1 во 2-й строке; i - это номер столбца
             i = .Rows(2).Find(rng(1, 1).Value, lookat:=xlWhole).Column
             If i > 0 Then
                 With .Range("A1").CurrentRegion
                     'в найденном столбце пишем формулу типа =ЕСЛИОШИБКА(ВПР(статья1;rng.Address;столбец;0);"")
                     With .Columns(i).Offset(2).Resize(.Rows.Count - 2)
                         .FormulaR1C1 = _
                         "=IFERROR(VLOOKUP(RC[-" & i - 2 & "]," & r & "," & j & ",0),"""")"
                         'вместо формул оставляем значения
                         .Value = .Value
                     End With
                 End With
             End If
         End With
     Next j
End With
Application.ScreenUpdating = True
End Sub
[/vba]
Найди 6 отличий и получи приз! biggrin

Автор - nilem
Дата добавления - 31.10.2012 в 15:26
DJ_Marker_MC Дата: Среда, 31.10.2012, 15:34 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Еще раз спасибо. Всё работает как часы.
С описанием посижу поразбираюсь, очень хочу понять как всё работает.
Можете еще только один момент объяснить:

r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)

"[месяц.xlsm]макрос!" - это что док месяц, лист макрос далее должен идти диапазон rng.Address(, , xlR1C1), а rng = Range("A1").CurrentRegion.Offset(, 1)
тоесть r = "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address(, , xlR1C1) вот я никак не могу понять эту часть((( Расшифруйте пожалуйста
 
Ответить
СообщениеЕще раз спасибо. Всё работает как часы.
С описанием посижу поразбираюсь, очень хочу понять как всё работает.
Можете еще только один момент объяснить:

r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)

"[месяц.xlsm]макрос!" - это что док месяц, лист макрос далее должен идти диапазон rng.Address(, , xlR1C1), а rng = Range("A1").CurrentRegion.Offset(, 1)
тоесть r = "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address(, , xlR1C1) вот я никак не могу понять эту часть((( Расшифруйте пожалуйста

Автор - DJ_Marker_MC
Дата добавления - 31.10.2012 в 15:34
nilem Дата: Среда, 31.10.2012, 15:51 | Сообщение № 18
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
[vba]
Code
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
r = "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address(, , xlR1C1)
[/vba]
ну да, это одно и то же. Попробуйте вставить в код после этой строки вот это
[vba]
Code
MsgBox "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address
[/vba]
, чтобы увидеть значение этой r


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение[vba]
Code
r = "[месяц.xlsm]макрос!" & rng.Address(, , xlR1C1)
r = "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address(, , xlR1C1)
[/vba]
ну да, это одно и то же. Попробуйте вставить в код после этой строки вот это
[vba]
Code
MsgBox "[месяц.xlsm]макрос!" & Range("A1").CurrentRegion.Offset(, 1).Address
[/vba]
, чтобы увидеть значение этой r

Автор - nilem
Дата добавления - 31.10.2012 в 15:51
DJ_Marker_MC Дата: Среда, 31.10.2012, 17:20 | Сообщение № 19
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
О... спасибо. теперь дошло))))
Я даже кое что подправил под себя)))

.Resize(.Rows.Count - 3)

у Вас там стоит 2 и если поставить внизу обоих таблиц формулу суммы, то значения заменяются или значениями или пустотой в случае если столбце B не ставить наименование итоговой строки, а при -3 всё ок)))
 
Ответить
СообщениеО... спасибо. теперь дошло))))
Я даже кое что подправил под себя)))

.Resize(.Rows.Count - 3)

у Вас там стоит 2 и если поставить внизу обоих таблиц формулу суммы, то значения заменяются или значениями или пустотой в случае если столбце B не ставить наименование итоговой строки, а при -3 всё ок)))

Автор - DJ_Marker_MC
Дата добавления - 31.10.2012 в 17:20
DJ_Marker_MC Дата: Вторник, 06.11.2012, 13:59 | Сообщение № 20
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Ребята, помогите пожалуйста немножко реконструировать одну формулу в VBA в том что уже готово.

в сообщении nilem, есть вот такая строка
[vba]
Code
                    With .Columns(i).Offset(2).Resize(.Rows.Count - 2)
[/vba]

я хочу в Offset вместо 2, вставить формулу поискпоз чтоб смещение происходило не на указанное число 2, а на найденную позицию минус 1, как я понимаю должно быть так:

[vba]
Code
                    With .Columns(i).Offset(WorksheetFunction.Match("18", Range("A1:A100"), 0) - 1).Resize(.Rows.Count - 2)
[/vba]

но почему то таким образом ничего не происходит?
Другими словами мне нужно вернуть номер строки текущего листа с помощью вот этого выражения WorksheetFunction.Match("18", Range("A1:A100"), 0) - 1 но почему то оно не равносильно этому Offset(2), что я сделал в этом случае не правильно?


Сообщение отредактировал marker_mc - Вторник, 06.11.2012, 14:11
 
Ответить
СообщениеРебята, помогите пожалуйста немножко реконструировать одну формулу в VBA в том что уже готово.

в сообщении nilem, есть вот такая строка
[vba]
Code
                    With .Columns(i).Offset(2).Resize(.Rows.Count - 2)
[/vba]

я хочу в Offset вместо 2, вставить формулу поискпоз чтоб смещение происходило не на указанное число 2, а на найденную позицию минус 1, как я понимаю должно быть так:

[vba]
Code
                    With .Columns(i).Offset(WorksheetFunction.Match("18", Range("A1:A100"), 0) - 1).Resize(.Rows.Count - 2)
[/vba]

но почему то таким образом ничего не происходит?
Другими словами мне нужно вернуть номер строки текущего листа с помощью вот этого выражения WorksheetFunction.Match("18", Range("A1:A100"), 0) - 1 но почему то оно не равносильно этому Offset(2), что я сделал в этом случае не правильно?

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

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