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

Вход

Регистрация

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

 

= Мир MS Excel/Собрать данные со всех листов по критерию - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Собрать данные со всех листов по критерию (Макросы/Sub)
Собрать данные со всех листов по критерию
Wasilich Дата: Понедельник, 09.01.2017, 12:46 | Сообщение № 21
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
как бы добавить, что бы он и столбец А подхватывал? и минусовые значения в красный красил?
Игорь, на листе "Дефицит" в шапке, в место "№заказа" напиши "Сварка" и проверь. А на счет, в красный красить, в колонках месяцев, примени УФ.

И да, внизу кода строку
[vba]
Код
.Range("A3").Resize(r11_, st_).Clear
[/vba]
Замени на
[vba]
Код
.Range("A3").Resize(r11_, st_).ClearContents
[/vba]
И под ней добавь две строки
[vba]
Код
.Range("A3").Resize(r11_, st_).Borders(xlInsideVertical).LineStyle = xlNone
.Range("A3").Resize(r11_, st_).Borders(xlInsideHorizontal).LineStyle = xlNone
[/vba]
Это что бы УФ не стиралось.


Сообщение отредактировал Wasilich - Понедельник, 09.01.2017, 13:09
 
Ответить
Сообщение
как бы добавить, что бы он и столбец А подхватывал? и минусовые значения в красный красил?
Игорь, на листе "Дефицит" в шапке, в место "№заказа" напиши "Сварка" и проверь. А на счет, в красный красить, в колонках месяцев, примени УФ.

И да, внизу кода строку
[vba]
Код
.Range("A3").Resize(r11_, st_).Clear
[/vba]
Замени на
[vba]
Код
.Range("A3").Resize(r11_, st_).ClearContents
[/vba]
И под ней добавь две строки
[vba]
Код
.Range("A3").Resize(r11_, st_).Borders(xlInsideVertical).LineStyle = xlNone
.Range("A3").Resize(r11_, st_).Borders(xlInsideHorizontal).LineStyle = xlNone
[/vba]
Это что бы УФ не стиралось.

Автор - Wasilich
Дата добавления - 09.01.2017 в 12:46
китин Дата: Понедельник, 09.01.2017, 13:19 | Сообщение № 22
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
блин. слона то я и не приметил. вот что значит неуч :D
Wasilich, спасибо.
[p.s.]а теперь надо голову ломать :разбираться в коде, а то ведь если чё исправлять то мне :D


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Понедельник, 09.01.2017, 13:20
 
Ответить
Сообщениеблин. слона то я и не приметил. вот что значит неуч :D
Wasilich, спасибо.
[p.s.]а теперь надо голову ломать :разбираться в коде, а то ведь если чё исправлять то мне :D

Автор - китин
Дата добавления - 09.01.2017 в 13:19
_Boroda_ Дата: Понедельник, 09.01.2017, 17:05 | Сообщение № 23
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
названия полей в шапках должны быть одинаковыми

Игорь, извини, я сейчас не дома и сложно в интернет выходить.
Вот, лови. Так хотел?
Кстати, про столбец А - можно просто назвать его одинаково во всех листах, тогда он сам подхватывался бы - это про слона
А УФ зачем? Тогда нужно за диапазоном УФ следить или заведомо бОльший давать, что на производительности скажется. Просто в конце ставим формат ячейки с красными отрицательными.
[vba]
Код
.Range("K3").Resize(r111_ - 2, 12).NumberFormat = "#,##0_ ;[Red]-#,##0 "
[/vba]

А уж если так
строку
[vba]
Код
.Range("A3").Resize(r11_, st_).Clear
[/vba]
Замени на
[vba]
Код
.Range("A3").Resize(r11_, st_).ClearContents
[/vba]
И под ней добавь две строки
[vba]
Код
.Range("A3").Resize(r11_, st_).Borders(xlInsideVertical).LineStyle = xlNone
.Range("A3").Resize(r11_, st_).Borders(xlInsideHorizontal).LineStyle = xlNone
[/vba]

то нужно стирать и правую-левую границы в случае, когда данных стало меньше (например, сначала было 3 строки, а потом стало 2)
К сообщению приложен файл: 1653792_1.xlsm (87.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
названия полей в шапках должны быть одинаковыми

Игорь, извини, я сейчас не дома и сложно в интернет выходить.
Вот, лови. Так хотел?
Кстати, про столбец А - можно просто назвать его одинаково во всех листах, тогда он сам подхватывался бы - это про слона
А УФ зачем? Тогда нужно за диапазоном УФ следить или заведомо бОльший давать, что на производительности скажется. Просто в конце ставим формат ячейки с красными отрицательными.
[vba]
Код
.Range("K3").Resize(r111_ - 2, 12).NumberFormat = "#,##0_ ;[Red]-#,##0 "
[/vba]

А уж если так
строку
[vba]
Код
.Range("A3").Resize(r11_, st_).Clear
[/vba]
Замени на
[vba]
Код
.Range("A3").Resize(r11_, st_).ClearContents
[/vba]
И под ней добавь две строки
[vba]
Код
.Range("A3").Resize(r11_, st_).Borders(xlInsideVertical).LineStyle = xlNone
.Range("A3").Resize(r11_, st_).Borders(xlInsideHorizontal).LineStyle = xlNone
[/vba]

то нужно стирать и правую-левую границы в случае, когда данных стало меньше (например, сначала было 3 строки, а потом стало 2)

Автор - _Boroda_
Дата добавления - 09.01.2017 в 17:05
китин Дата: Вторник, 10.01.2017, 10:11 | Сообщение № 24
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Саша спасибо.
[p.s.]век живи век учись дураком помрешь :D :D :D


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Вторник, 10.01.2017, 10:11
 
Ответить
СообщениеСаша спасибо.
[p.s.]век живи век учись дураком помрешь :D :D :D

Автор - китин
Дата добавления - 10.01.2017 в 10:11
Wasilich Дата: Вторник, 10.01.2017, 21:21 | Сообщение № 25
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А уж если так
Да ладно уж. Человек не мог тебя дождаться. А я поленился додумывать. По быстрому смикитил, пока он тебя дождется. А в случае стирания границ, есть простая команда и нечего не оставляет[vba]
Код
Range(диапазон).Borders.LineStyle = xlNone
[/vba]Просто не вспомнил, а искать тоже поленился. А Игорю, и это в пользу. Работало же. :)


Сообщение отредактировал Wasilich - Вторник, 10.01.2017, 21:23
 
Ответить
Сообщение
А уж если так
Да ладно уж. Человек не мог тебя дождаться. А я поленился додумывать. По быстрому смикитил, пока он тебя дождется. А в случае стирания границ, есть простая команда и нечего не оставляет[vba]
Код
Range(диапазон).Borders.LineStyle = xlNone
[/vba]Просто не вспомнил, а искать тоже поленился. А Игорю, и это в пользу. Работало же. :)

Автор - Wasilich
Дата добавления - 10.01.2017 в 21:21
_Boroda_ Дата: Среда, 11.01.2017, 07:23 | Сообщение № 26
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну Василич, ну повеселил - это вспомнил[vba]
Код
.Borders(xlInsideVertical).LineStyle = xlNone
[/vba], а это не вспомнил [vba]
Код
.Borders.LineStyle = xlNone
[/vba]
А дождаться меня сейчас да, не всегда легко - я в Корее, разница 6 часов, да и не всегда я тут у компа.

А вот насчет
Игорю, и это в пользу. Работало же
не соглашусь. Нужно сразу учиться задумываться о правильности и быстроте решения. За примером далеко ходить не нужно - я, когда только начинал макросы изучать, не очень понял про объявление переменных и благополучно на это забил, благо и без объявления все работало. Так и пишу почти всегда без Dim-ов. Сейчас-то знаю что и как, но привычка осталась. В 99% это почти ни на что не влияет, но бывает, что объявления существенно ускоряют работу. Да и по-феншую это.
Поэтому я считаю, что "Лишь бы работало" - это вариант для людей типа "Excel не знаю и знать не хочу", а для Игоря нужно так писать, чтобы он при анализе кода хорошему учился. :D


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу Василич, ну повеселил - это вспомнил[vba]
Код
.Borders(xlInsideVertical).LineStyle = xlNone
[/vba], а это не вспомнил [vba]
Код
.Borders.LineStyle = xlNone
[/vba]
А дождаться меня сейчас да, не всегда легко - я в Корее, разница 6 часов, да и не всегда я тут у компа.

А вот насчет
Игорю, и это в пользу. Работало же
не соглашусь. Нужно сразу учиться задумываться о правильности и быстроте решения. За примером далеко ходить не нужно - я, когда только начинал макросы изучать, не очень понял про объявление переменных и благополучно на это забил, благо и без объявления все работало. Так и пишу почти всегда без Dim-ов. Сейчас-то знаю что и как, но привычка осталась. В 99% это почти ни на что не влияет, но бывает, что объявления существенно ускоряют работу. Да и по-феншую это.
Поэтому я считаю, что "Лишь бы работало" - это вариант для людей типа "Excel не знаю и знать не хочу", а для Игоря нужно так писать, чтобы он при анализе кода хорошему учился. :D

Автор - _Boroda_
Дата добавления - 11.01.2017 в 07:23
китин Дата: Среда, 11.01.2017, 07:30 | Сообщение № 27
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Ну на сегодня Сашин код и ваши объяснялки примерно как китайская грамота. :D .Вечером полезу смотреть, что такое
Borders(xlInsideVertical).LineStyle = xlNone


Resize(r111_ - 2, 12).NumberFormat

наверно успею на работе проштудировать %)
[p.s.]спасибо вам за терпение yes
а что ты в Корее делаешь? дело пытаешь или от дела линяешь?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Среда, 11.01.2017, 07:31
 
Ответить
СообщениеНу на сегодня Сашин код и ваши объяснялки примерно как китайская грамота. :D .Вечером полезу смотреть, что такое
Borders(xlInsideVertical).LineStyle = xlNone


Resize(r111_ - 2, 12).NumberFormat

наверно успею на работе проштудировать %)
[p.s.]спасибо вам за терпение yes
а что ты в Корее делаешь? дело пытаешь или от дела линяешь?

Автор - китин
Дата добавления - 11.01.2017 в 07:30
_Boroda_ Дата: Среда, 11.01.2017, 07:49 | Сообщение № 28
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Первое - снятие промежуточных вертикальных линий покраски. Поставь запись макроса, поставь у ячеек всякие границы и посмотри, что запишется. Там кода много будет, но все логично, понять несложно.
Второе - от ячейки К3 увеличиваем диапазон на r111_-2 вниз и на 12 вправо и ставим формат ячейки числовой с разделителями и красными отрицательными
# ##0_ ;[Красный]-# ##0\
Тоже можно автозаписью макроса - посмотри в модуле 2, там как раз автозапись, я оттуда сдул, а потом этот модуль стереть забыл.

[p.s.]А в Корее я в качестве сопровождающего родственника на медобслуживание[/p.s.]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПервое - снятие промежуточных вертикальных линий покраски. Поставь запись макроса, поставь у ячеек всякие границы и посмотри, что запишется. Там кода много будет, но все логично, понять несложно.
Второе - от ячейки К3 увеличиваем диапазон на r111_-2 вниз и на 12 вправо и ставим формат ячейки числовой с разделителями и красными отрицательными
# ##0_ ;[Красный]-# ##0\
Тоже можно автозаписью макроса - посмотри в модуле 2, там как раз автозапись, я оттуда сдул, а потом этот модуль стереть забыл.

[p.s.]А в Корее я в качестве сопровождающего родственника на медобслуживание[/p.s.]

Автор - _Boroda_
Дата добавления - 11.01.2017 в 07:49
Wasilich Дата: Среда, 11.01.2017, 10:21 | Сообщение № 29
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
чтобы он при анализе кода хорошему учился. :D
Так я ж тоже учусь. А то, что не вспомнил, макрорекордером записал. А так, бывает вместо запятой ";" поставлю или наоборот и туплю. :) А вот насчет, чтобы знать, что хорошее, надо с чем то сравнивать. :D
А в Корее я в качестве сопровождающего
Не уж то, корейский знаешь? respect


Сообщение отредактировал Wasilich - Среда, 11.01.2017, 10:24
 
Ответить
Сообщение
чтобы он при анализе кода хорошему учился. :D
Так я ж тоже учусь. А то, что не вспомнил, макрорекордером записал. А так, бывает вместо запятой ";" поставлю или наоборот и туплю. :) А вот насчет, чтобы знать, что хорошее, надо с чем то сравнивать. :D
А в Корее я в качестве сопровождающего
Не уж то, корейский знаешь? respect

Автор - Wasilich
Дата добавления - 11.01.2017 в 10:21
китин Дата: Пятница, 13.01.2017, 08:08 | Сообщение № 30
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Всем доброе утро!!! Вопрос вдогонку: А что и, главное где, дописать в макросе от _Boroda_, (пост 24), что бы критерий был не только 60, но и все производные от 60. как то 6010, 60вр, 6061 и т.д.( т.е. все, что содержит 60???? :'(
[offtop]60&"*" 60&* 60* не катит совершенно %) [/offtop]


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 13.01.2017, 08:11
 
Ответить
СообщениеВсем доброе утро!!! Вопрос вдогонку: А что и, главное где, дописать в макросе от _Boroda_, (пост 24), что бы критерий был не только 60, но и все производные от 60. как то 6010, 60вр, 6061 и т.д.( т.е. все, что содержит 60???? :'(
[offtop]60&"*" 60&* 60* не катит совершенно %) [/offtop]

Автор - китин
Дата добавления - 13.01.2017 в 08:08
Wasilich Дата: Пятница, 13.01.2017, 12:01 | Сообщение № 31
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Возможно я опять не прав, но по идее должно работать. Строку
[vba]
Код
If .Range("B" & i) = 60 Then
[/vba]Пробуй менять на
[vba]
Код
If Left(.Range("B" & i), 2) = "60" Then
[/vba]или
[vba]
Код
If Val(Left(.Range("B" & i), 2)) = 60 Then
If Mid(.Range("B" & i), 1, 2) = "60" Then
If Val(Mid(.Range("B" & i), 1, 2)) = 60 Then
[/vba]Там еще "Like" можно применить и др. Короче пробуй, пока Саши нет.
[p.s.]А он кажись тут![/p.s.]


Сообщение отредактировал Wasilich - Пятница, 13.01.2017, 12:04
 
Ответить
СообщениеВозможно я опять не прав, но по идее должно работать. Строку
[vba]
Код
If .Range("B" & i) = 60 Then
[/vba]Пробуй менять на
[vba]
Код
If Left(.Range("B" & i), 2) = "60" Then
[/vba]или
[vba]
Код
If Val(Left(.Range("B" & i), 2)) = 60 Then
If Mid(.Range("B" & i), 1, 2) = "60" Then
If Val(Mid(.Range("B" & i), 1, 2)) = 60 Then
[/vba]Там еще "Like" можно применить и др. Короче пробуй, пока Саши нет.
[p.s.]А он кажись тут![/p.s.]

Автор - Wasilich
Дата добавления - 13.01.2017 в 12:01
Manyasha Дата: Пятница, 13.01.2017, 12:12 | Сообщение № 32
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
а еще вот здесь, наверное:
вместо
[vba]
Код
col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60)
[/vba]
написать
[vba]
Код
col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), ">=60")
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеа еще вот здесь, наверное:
вместо
[vba]
Код
col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60)
[/vba]
написать
[vba]
Код
col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), ">=60")
[/vba]

Автор - Manyasha
Дата добавления - 13.01.2017 в 12:12
Wasilich Дата: Пятница, 13.01.2017, 12:16 | Сообщение № 33
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Manyasha, этой строки я и не заметил но, у него там есть "60вр", сработает ли ">="?


Сообщение отредактировал Wasilich - Пятница, 13.01.2017, 12:18
 
Ответить
СообщениеManyasha, этой строки я и не заметил но, у него там есть "60вр", сработает ли ">="?

Автор - Wasilich
Дата добавления - 13.01.2017 в 12:16
_Boroda_ Дата: Пятница, 13.01.2017, 13:03 | Сообщение № 34
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Предположу, что 1060 не является производной от 60 и считать ее не нужно, тогда вначале вместо
[vba]
Код
                    nr_ = r1_ - r0_ + 1
                    col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60)
[/vba]
добавляется цикл
[vba]
Код
                    For j = r0_ To r1_
                        If .Range("B" & j) Like "60*" Then
                            col_ = col_ + 1
                        End If
                    Next j
[/vba]
А потом меняется строка
[vba]
Код
If .Range("B" & i) Like "60*" Then
[/vba]
В коде поменянное обозначил '===
К сообщению приложен файл: 1653792_2.xlsm (87.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПредположу, что 1060 не является производной от 60 и считать ее не нужно, тогда вначале вместо
[vba]
Код
                    nr_ = r1_ - r0_ + 1
                    col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60)
[/vba]
добавляется цикл
[vba]
Код
                    For j = r0_ To r1_
                        If .Range("B" & j) Like "60*" Then
                            col_ = col_ + 1
                        End If
                    Next j
[/vba]
А потом меняется строка
[vba]
Код
If .Range("B" & i) Like "60*" Then
[/vba]
В коде поменянное обозначил '===

Автор - _Boroda_
Дата добавления - 13.01.2017 в 13:03
китин Дата: Пятница, 13.01.2017, 13:37 | Сообщение № 35
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
гениально господа!!! спасибо. [offtop]глядишь и я чему нибудь научусь yes


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениегениально господа!!! спасибо. [offtop]глядишь и я чему нибудь научусь yes

Автор - китин
Дата добавления - 13.01.2017 в 13:37
китин Дата: Пятница, 13.01.2017, 13:41 | Сообщение № 36
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
у него там есть "60вр", сработает ли ">="

еще как сработало!!! на выходные есть пища для ума!!!! И пусть ремонт подождет!!!


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
у него там есть "60вр", сработает ли ">="

еще как сработало!!! на выходные есть пища для ума!!!! И пусть ремонт подождет!!!

Автор - китин
Дата добавления - 13.01.2017 в 13:41
Manyasha Дата: Пятница, 13.01.2017, 13:44 | Сообщение № 37
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
сработает ли ">="?

не, не сработает :( про "60вр" забыла.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
сработает ли ">="?

не, не сработает :( про "60вр" забыла.

Автор - Manyasha
Дата добавления - 13.01.2017 в 13:44
китин Дата: Пятница, 13.01.2017, 13:49 | Сообщение № 38
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а я говорю сработало!!!!! :p
К сообщению приложен файл: 555222.xlsm (91.6 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа я говорю сработало!!!!! :p

Автор - китин
Дата добавления - 13.01.2017 в 13:49
Manyasha Дата: Пятница, 13.01.2017, 14:47 | Сообщение № 39
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Повезло)
Просто Саша в своем последем файле забыл убрать старые 2 строчки:
[vba]
Код
                If r1_ >= r0_ Then
                '===
                    For j = r0_ To r1_
                        If .Range("B" & j) Like "60*" Then
                            col_ = col_ + 1
                        End If
                    Next j
                '===
                    nr_ = r1_ - r0_ + 1 'вот эту
                    col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60) 'и вот эту
                End If
[/vba]
Поэтому col_ получается больше, чем нужно, это не вызывает ошибки.

А если использовать только мой вариант, макрос может и не сработать (пример во вложении), т.к. countIf (счётесли) считает не то, что нужно.
К сообщению приложен файл: 555222-err.xlsm (92.1 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеПовезло)
Просто Саша в своем последем файле забыл убрать старые 2 строчки:
[vba]
Код
                If r1_ >= r0_ Then
                '===
                    For j = r0_ To r1_
                        If .Range("B" & j) Like "60*" Then
                            col_ = col_ + 1
                        End If
                    Next j
                '===
                    nr_ = r1_ - r0_ + 1 'вот эту
                    col_ = col_ + WorksheetFunction.CountIf(.Range("B" & r0_).Resize(nr_), 60) 'и вот эту
                End If
[/vba]
Поэтому col_ получается больше, чем нужно, это не вызывает ошибки.

А если использовать только мой вариант, макрос может и не сработать (пример во вложении), т.к. countIf (счётесли) считает не то, что нужно.

Автор - Manyasha
Дата добавления - 13.01.2017 в 14:47
_Boroda_ Дата: Пятница, 13.01.2017, 15:13 | Сообщение № 40
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Просто Саша в своем последем файле забыл убрать старые 2 строчки:
Точно, Марин, спасибо. Я сначала-то убрал, макрос запустил, все нормально, а потом стал на форум код копировать, апострофы постирал, скопировал код и апострофы взад поставить забыл
Вот нормальный файл
К сообщению приложен файл: 1653792_3.xlsm (85.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Просто Саша в своем последем файле забыл убрать старые 2 строчки:
Точно, Марин, спасибо. Я сначала-то убрал, макрос запустил, все нормально, а потом стал на форум код копировать, апострофы постирал, скопировал код и апострофы взад поставить забыл
Вот нормальный файл

Автор - _Boroda_
Дата добавления - 13.01.2017 в 15:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Собрать данные со всех листов по критерию (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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