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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Макрос - найти лист, найти столбец, вставить значения
Serge_007 Дата: Вторник, 06.11.2012, 14:21 | Сообщение № 21
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Если ищите число, то кавычки надо убрать:
[vba]
Code
WorksheetFunction.Match(18, Range("a1:a100"), 0)
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЕсли ищите число, то кавычки надо убрать:
[vba]
Code
WorksheetFunction.Match(18, Range("a1:a100"), 0)
[/vba]

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

Excel 2019
сделал - не помогло. Всё равно ничего не происходит., а если вместо всего этого выражения ставлю цифру 2, то всё нормально работает

Хотя странно что не работает, создал модуль, туда вписал вот это

[vba]
Code
Sub hhh()
MsgBox (WorksheetFunction.Match(18, Range("A1:A100"), 0) - 1)
End Sub
[/vba]

запустил на листе, и всё правильно - вернуло нужную строку, выходит не хочет дружить с оффсет или как?


Сообщение отредактировал marker_mc - Вторник, 06.11.2012, 14:48
 
Ответить
Сообщениесделал - не помогло. Всё равно ничего не происходит., а если вместо всего этого выражения ставлю цифру 2, то всё нормально работает

Хотя странно что не работает, создал модуль, туда вписал вот это

[vba]
Code
Sub hhh()
MsgBox (WorksheetFunction.Match(18, Range("A1:A100"), 0) - 1)
End Sub
[/vba]

запустил на листе, и всё правильно - вернуло нужную строку, выходит не хочет дружить с оффсет или как?

Автор - DJ_Marker_MC
Дата добавления - 06.11.2012 в 14:38
Serge_007 Дата: Вторник, 06.11.2012, 14:50 | Сообщение № 23
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (marker_mc)
сделал - не помогло.

У меня работает:

К сообщению приложен файл: 0129902.gif (34.8 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (marker_mc)
сделал - не помогло.

У меня работает:


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

Excel 2019
Понял почему не работает, но теперь не знаю как исправить. Получается что WorksheetFunction.Match(18, Range("a1:a100"), 0)
ищет число 18 в А1:А100 именно в той книге где находится макрос, а мне нужно чтоб искало "18" на каждом листе в процессе работы цикла.
Смысл макроса такой: Ищет в документе "общий" нужный лист, нужный столбец и в определенный диапазон вставляет формулу которая вставляется в найденный диапазон (ссылаясь на док "месяц" и заменяет себя на значение), а при WorksheetFunction ищется не в каждом листе при цикле, а в документе "месяц" и в каждом листе происходит оффсет на одно и тоже значение.

Как это исправить Match искал именно в листах?


Сообщение отредактировал marker_mc - Вторник, 06.11.2012, 15:43
 
Ответить
СообщениеПонял почему не работает, но теперь не знаю как исправить. Получается что WorksheetFunction.Match(18, Range("a1:a100"), 0)
ищет число 18 в А1:А100 именно в той книге где находится макрос, а мне нужно чтоб искало "18" на каждом листе в процессе работы цикла.
Смысл макроса такой: Ищет в документе "общий" нужный лист, нужный столбец и в определенный диапазон вставляет формулу которая вставляется в найденный диапазон (ссылаясь на док "месяц" и заменяет себя на значение), а при WorksheetFunction ищется не в каждом листе при цикле, а в документе "месяц" и в каждом листе происходит оффсет на одно и тоже значение.

Как это исправить Match искал именно в листах?

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

Excel 2019
Всё, вроде ПОКА ЧТО понял сам... нужно было вот так писать

[vba]
Code
            b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)
[/vba]


Сообщение отредактировал marker_mc - Вторник, 06.11.2012, 16:51
 
Ответить
СообщениеВсё, вроде ПОКА ЧТО понял сам... нужно было вот так писать

[vba]
Code
            b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)
[/vba]

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

Excel 2019
Quote (marker_mc)
Всё, вроде ПОКА ЧТО понял сам... нужно было вот так писать

b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)


блин(((( не то... оно берет значение так, только с того листа который активен изначально, но не тот который в данный момент обрабатывает макрос.


Сообщение отредактировал marker_mc - Вторник, 06.11.2012, 16:51
 
Ответить
Сообщение
Quote (marker_mc)
Всё, вроде ПОКА ЧТО понял сам... нужно было вот так писать

b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)


блин(((( не то... оно берет значение так, только с того листа который активен изначально, но не тот который в данный момент обрабатывает макрос.

Автор - DJ_Marker_MC
Дата добавления - 06.11.2012 в 16:51
RAN Дата: Вторник, 06.11.2012, 17:06 | Сообщение № 27
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Code
With .Range("A1").CurrentRegion
a = WorksheetFunction.Match(18, .Range("A1:A100"), 0) - 1
[/vba]

Далее - по тексту.

или
[vba]
Code
With .Range("A1").CurrentRegion
a = WorksheetFunction.Match(18, .Columns(1), 0) - 1
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 06.11.2012, 17:08
 
Ответить
Сообщение[vba]
Code
With .Range("A1").CurrentRegion
a = WorksheetFunction.Match(18, .Range("A1:A100"), 0) - 1
[/vba]

Далее - по тексту.

или
[vba]
Code
With .Range("A1").CurrentRegion
a = WorksheetFunction.Match(18, .Columns(1), 0) - 1
[/vba]

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

Excel 2019
RAN, спасибо Вам большое. Я вчера всё таки тоже добился нужного результата вот так:

[vba]
Code
b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").Sheets(rng(2, j).Value).Range("A1:A100"), 0) - 1)
[/vba]

но уже понимаю это микроскопом по гвоздям было)))

мне Ваш вариант нравится больше, поэтому у себя меняю.
 
Ответить
СообщениеRAN, спасибо Вам большое. Я вчера всё таки тоже добился нужного результата вот так:

[vba]
Code
b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").Sheets(rng(2, j).Value).Range("A1:A100"), 0) - 1)
[/vba]

но уже понимаю это микроскопом по гвоздям было)))

мне Ваш вариант нравится больше, поэтому у себя меняю.

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

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