Макрос - найти лист, найти столбец, вставить значения
Serge_007
Дата: Вторник, 06.11.2012, 14:21 |
Сообщение № 21
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Если ищите число, то кавычки надо убрать: [vba]Code
WorksheetFunction.Match(18, Range("a1:a100"), 0)
[/vba]
Если ищите число, то кавычки надо убрать: [vba]Code
WorksheetFunction.Match(18, Range("a1:a100"), 0)
[/vba] Serge_007
Ю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] запустил на листе, и всё правильно - вернуло нужную строку, выходит не хочет дружить с оффсет или как?
сделал - не помогло. Всё равно ничего не происходит., а если вместо всего этого выражения ставлю цифру 2, то всё нормально работает Хотя странно что не работает, создал модуль, туда вписал вот это [vba]Code
Sub hhh() MsgBox (WorksheetFunction.Match(18, Range("A1:A100"), 0) - 1) End Sub
[/vba] запустил на листе, и всё правильно - вернуло нужную строку, выходит не хочет дружить с оффсет или как? DJ_Marker_MC
Сообщение отредактировал 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 )
сделал - не помогло.
У меня работает:
Quote (marker_mc )
сделал - не помогло.
У меня работает: Serge_007
Ю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 искал именно в листах?
Понял почему не работает, но теперь не знаю как исправить. Получается что WorksheetFunction.Match(18, Range("a1:a100"), 0) ищет число 18 в А1:А100 именно в той книге где находится макрос, а мне нужно чтоб искало "18" на каждом листе в процессе работы цикла. Смысл макроса такой: Ищет в документе "общий" нужный лист, нужный столбец и в определенный диапазон вставляет формулу которая вставляется в найденный диапазон (ссылаясь на док "месяц" и заменяет себя на значение), а при WorksheetFunction ищется не в каждом листе при цикле, а в документе "месяц" и в каждом листе происходит оффсет на одно и тоже значение. Как это исправить Match искал именно в листах? DJ_Marker_MC
Сообщение отредактировал 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]
Всё, вроде ПОКА ЧТО понял сам... нужно было вот так писать [vba]Code
b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)
[/vba] DJ_Marker_MC
Сообщение отредактировал 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)
блин(((( не то... оно берет значение так, только с того листа который активен изначально, но не тот который в данный момент обрабатывает макрос.
Quote (marker_mc )
Всё, вроде ПОКА ЧТО понял сам... нужно было вот так писать b = (Application.Match(18, Workbooks("Финансовый отчет 2012.xlsx").ActiveSheet.Range("A1:A100"), 0) - 1)
блин(((( не то... оно берет значение так, только с того листа который активен изначально, но не тот который в данный момент обрабатывает макрос.DJ_Marker_MC
Сообщение отредактировал 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
[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]
[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
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал 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
Ответить
Сообщение 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