Посоветуйте книги по VBA EXCEL - в продаже.
» Excel VBA
помогите написать код!!! я только учусь писать макросы.
допустим, есть на одном листе таблица, занимающая диапазон A:F. в этом диапазоне записываются какие-то данные, но в первом столбце могут записыватся одинаковые числа. нужно, чтобы на другой лист копировались все данные, у которых числа в первом столбце одинаковы. Этот код должен выполняться после внесения числа из первого столбца в окно сообщения InputBox
допустим, есть на одном листе таблица, занимающая диапазон A:F. в этом диапазоне записываются какие-то данные, но в первом столбце могут записыватся одинаковые числа. нужно, чтобы на другой лист копировались все данные, у которых числа в первом столбце одинаковы. Этот код должен выполняться после внесения числа из первого столбца в окно сообщения InputBox
Pantera3587
Типа такого?
Код: Sub test()
res = InputBox("Enter number:")
nr = Sheets(1).UsedRange.Rows.Count
Sheets(2).UsedRange.Clear
j = 1
For i = 1 To nr
If Cells(i, 1) = CInt(res) Then
For c = 1 To 6
Sheets(2).Cells(j, c).Value = _
Sheets(1).Cells(i, c).Value
Next c
j = j + 1
End If
Next i
End Sub
Типа такого?
Код: Sub test()
res = InputBox("Enter number:")
nr = Sheets(1).UsedRange.Rows.Count
Sheets(2).UsedRange.Clear
j = 1
For i = 1 To nr
If Cells(i, 1) = CInt(res) Then
For c = 1 To 6
Sheets(2).Cells(j, c).Value = _
Sheets(1).Cells(i, c).Value
Next c
j = j + 1
End If
Next i
End Sub
Вот такие есть вопросы (может кто знает):
1. Как программно сохранить книгу(т.е. чтобы она не спрашивала:"Сохранить документ? Да?Нет?"). Возможно не сохранить, но обойти этот вопрос так, чтобы изменения в книге сохранились???
2. Как ускорить быстродействие программы (а то она слишком тормозит сильно, т.к. в ней постоянно сравниваются каждая ячейка одного столбца с каждой ячейкой другого столбца в основном через for-next, бывает for each-next и встречается do-while с различными условиями: if instr...then, if eto = to then)???. вообщем долго машина думает.
1. Как программно сохранить книгу(т.е. чтобы она не спрашивала:"Сохранить документ? Да?Нет?"). Возможно не сохранить, но обойти этот вопрос так, чтобы изменения в книге сохранились???
2. Как ускорить быстродействие программы (а то она слишком тормозит сильно, т.к. в ней постоянно сравниваются каждая ячейка одного столбца с каждой ячейкой другого столбца в основном через for-next, бывает for each-next и встречается do-while с различными условиями: if instr...then, if eto = to then)???. вообщем долго машина думает.
PavelO
Чтобы сохранить
Activeworkbook.Save
Чтобы не спрашивал
Activeworkbook.Saved = True
после чего закрыть без вопросов
Activeworkbook.Close
Чтобы сохранить
Activeworkbook.Save
Чтобы не спрашивал
Activeworkbook.Saved = True
после чего закрыть без вопросов
Activeworkbook.Close
PavelO
1. Ты имеешь ввиду при закрытии книги сохранять ее, не спрашивая пользователя? Для конкретной книги или для всех (последнее я лично не стал бы делать)? Если так, используй событие Workbook_BeforeClose и метод ActiveWorkbook.SaveAs
2. Программа в модуле или это обработчик событий?
Можно попробовать ограничить область, где сравниваются ячейки. Попробовать оптимизировать сравнение. Не видя кода сложно сказать.
Также попробуй вставить в начало кода:
Код: Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
1. Ты имеешь ввиду при закрытии книги сохранять ее, не спрашивая пользователя? Для конкретной книги или для всех (последнее я лично не стал бы делать)? Если так, используй событие Workbook_BeforeClose и метод ActiveWorkbook.SaveAs
2. Программа в модуле или это обработчик событий?
Можно попробовать ограничить область, где сравниваются ячейки. Попробовать оптимизировать сравнение. Не видя кода сложно сказать.
Также попробуй вставить в начало кода:
Код: Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Все. Сделал (Делал на ексель 2003, ВинХР). Всю прогу. У меня она работала. Принес к подруге показать (У нее ексель 2000, Вин98се). И ошибки поперли. Пишет что-то типа: "Compile error in hiden module Лист1". Нет ну понятно, что там все начиналось с кнопки, которая распологалась на Листе1, и от нее то ошибки и пошли. Полез разбираться. Ну некоторые переменные не обазвал - исправил, далее вба мне стал выделять такие операторы, как mid,left,ltrim, ссылаясь на ошибку. Видимо что-то со стрингами, обазваk переменную стрингом, она же используется в:For each c in worksheets("List1").range("A1:A200"), далее if mid(c.value, 3,5)>0 then .....
Почему у меня все работало, а у нее перестало??? Понятно, что разница версий, но всеже почему???
Почему у меня все работало, а у нее перестало??? Понятно, что разница версий, но всеже почему???
Доброго времени суток!
Надо было сравнить пару текстовый файлов с данными (В каждом файле 4 колонки через запятую. В конце строки пусто. Но сравнить надобно только первую колонку). Думал быстренько открыть в Экселе да и сравнить колонки из разных файлов. Да нарвался на проблему - файлы длинноваты, а в Экселе максимум 65536 строк всасывает. А в файле данные раза в 4 этот максимум перекрывают. Разорвать текстовый файл на куски и втянуть покусочно в отдельную колонку. Но ведь не разовая задача и геморойно.
А вопрос такой - может ли Эксель, открывая слишком длинный столбец данных, размещать это дело самостоятельно в нескольких последовательных колонках? Или это токма макросами делать надо?
проблему решил своеобразно - с помощью программульки WinMerge.
Надо было сравнить пару текстовый файлов с данными (В каждом файле 4 колонки через запятую. В конце строки пусто. Но сравнить надобно только первую колонку). Думал быстренько открыть в Экселе да и сравнить колонки из разных файлов. Да нарвался на проблему - файлы длинноваты, а в Экселе максимум 65536 строк всасывает. А в файле данные раза в 4 этот максимум перекрывают. Разорвать текстовый файл на куски и втянуть покусочно в отдельную колонку. Но ведь не разовая задача и геморойно.
А вопрос такой - может ли Эксель, открывая слишком длинный столбец данных, размещать это дело самостоятельно в нескольких последовательных колонках? Или это токма макросами делать надо?
проблему решил своеобразно - с помощью программульки WinMerge.
DeadVillage
Цитата:
1) что значит - сравнить?.. выбрать строчки, которые отличаются? Или которые одинаковы? Или просто посмотреть глазками, что там разное ;-))
2) вы уверены, что написать подобную задачку на любом языке программирования будет не проще?
3)
Цитата:
насколько я знаю - нет, не может... Нужно писать свою обработку текстового файла, хоть на VBA, хоть на любом языке программирования.
Добавлено:
оп-па. Пока я тут прыгал, проблема уже и решена.
Цитата:
;-)) я же говорил - Excel в данном случае не очень подходит.
закрываем дискуссию... ;-)
Цитата:
сравнить пару текстовых файлов с данными
1) что значит - сравнить?.. выбрать строчки, которые отличаются? Или которые одинаковы? Или просто посмотреть глазками, что там разное ;-))
2) вы уверены, что написать подобную задачку на любом языке программирования будет не проще?
3)
Цитата:
А вопрос такой - может ли Эксель, открывая слишком длинный столбец данных, размещать это дело самостоятельно в нескольких последовательных колонках
насколько я знаю - нет, не может... Нужно писать свою обработку текстового файла, хоть на VBA, хоть на любом языке программирования.
Добавлено:
оп-па. Пока я тут прыгал, проблема уже и решена.
Цитата:
проблему решил своеобразно - с помощью программульки WinMerge.
;-)) я же говорил - Excel в данном случае не очень подходит.
закрываем дискуссию... ;-)
Добрый день!
Уважаемые подскажите, пожалуйста: как можно из экселя работать с MDB (базами акцеса)?
Задача: В экселе создается техническое задание на монтаж, а вся инфа хранится на сервере в виде баз Акцеса. Причем необходимо выдергивать данные из двух разных баз.
Пробовал это делать ч/з микрософтКуэри и ч/з ИмпортВнешнихДанных, но как-то неудобно и некрасиво. И к томуже экселевские файлы стали на порядок тяжелее.
Спасибо. Я понимаю, что можно в Акцесе создавать техзадание и не ....пудрить мозги, но так уж повелось в этой организации до меня (тяжело ломать устои, да и в Акцесе я как жук в апельсине )
Уважаемые подскажите, пожалуйста: как можно из экселя работать с MDB (базами акцеса)?
Задача: В экселе создается техническое задание на монтаж, а вся инфа хранится на сервере в виде баз Акцеса. Причем необходимо выдергивать данные из двух разных баз.
Пробовал это делать ч/з микрософтКуэри и ч/з ИмпортВнешнихДанных, но как-то неудобно и некрасиво. И к томуже экселевские файлы стали на порядок тяжелее.
Спасибо. Я понимаю, что можно в Акцесе создавать техзадание и не ....пудрить мозги, но так уж повелось в этой организации до меня (тяжело ломать устои, да и в Акцесе я как жук в апельсине )
zporuchik
Думаю без VBA не обойтись...
А какого рода инфа в акцессе? Справочники? И надо чтобы в екселе они были доступны? В каком виде? Формы с выпадающими списками и т.п.?
Думаю без VBA не обойтись...
А какого рода инфа в акцессе? Справочники? И надо чтобы в екселе они были доступны? В каком виде? Формы с выпадающими списками и т.п.?
zporuchik
Есть книжка O'Reilly Integrating Excel and Access. Где брал не помню, но могу закачать куда-нибудь. Надо?
Добавлено:
Нашел, откуда брал. Ru-board, конечно же!
http://forum.ru-board.com/topic.cgi?forum=93&topic=0461&start=120#5
Есть книжка O'Reilly Integrating Excel and Access. Где брал не помню, но могу закачать куда-нибудь. Надо?
Добавлено:
Нашел, откуда брал. Ru-board, конечно же!
http://forum.ru-board.com/topic.cgi?forum=93&topic=0461&start=120#5
jONES1979
Так я и не просил без VBA.
В акцессе инфа по базовым станциям и радиорелейкам: их номера, адреса, азимуты, типы оборудования, азимуты и т.д.
В экселе нужны разные варианты доступа:
например: введя номер БС в соответствующие поля вносятся данные из акцесса, но не все данные есть в базе в явном виде и поэтому нужны выпадающие списки (которые отфильтровываются по номеру БС и вместо 500 значений в списке остается 5-6).
Yuk
За книгу большое спасибо - полистаю, но увы с инглишем неочень
Вопрос еще: в принцыпе возможен вариант работы из экселя с базами акцеса чтение/запись, т.е. в мою форму читаются данные из базы, а те которых в базе нет я ввожу в экселе и они добавляются в базу акцес?
Если вариант запись/чтение невозможен, то нестоит и заморачиваться с этим, а надо делать в акцесе мою форму техзадания
Всем кто откликнулся - спасибо! И сильно не ругайтесь - я ведь только учусь
Так я и не просил без VBA.
В акцессе инфа по базовым станциям и радиорелейкам: их номера, адреса, азимуты, типы оборудования, азимуты и т.д.
В экселе нужны разные варианты доступа:
например: введя номер БС в соответствующие поля вносятся данные из акцесса, но не все данные есть в базе в явном виде и поэтому нужны выпадающие списки (которые отфильтровываются по номеру БС и вместо 500 значений в списке остается 5-6).
Yuk
За книгу большое спасибо - полистаю, но увы с инглишем неочень
Вопрос еще: в принцыпе возможен вариант работы из экселя с базами акцеса чтение/запись, т.е. в мою форму читаются данные из базы, а те которых в базе нет я ввожу в экселе и они добавляются в базу акцес?
Если вариант запись/чтение невозможен, то нестоит и заморачиваться с этим, а надо делать в акцесе мою форму техзадания
Всем кто откликнулся - спасибо! И сильно не ругайтесь - я ведь только учусь
zporuchik
вариант "чтение/запись" возможен, но имхо проще сделать в акцессе форму техзадания Хотя конечно же я не знаю про что говорю, так как не видел того что у Вас есть наработанного
вариант "чтение/запись" возможен, но имхо проще сделать в акцессе форму техзадания Хотя конечно же я не знаю про что говорю, так как не видел того что у Вас есть наработанного
День добрый,
кто-нить поделитесь макросом "календарь". Хочу вводить дату не вручную, а при помощи такой "штуковины"... Событие или метод вызова значения не имеют..
заранее благодарен.
кто-нить поделитесь макросом "календарь". Хочу вводить дату не вручную, а при помощи такой "штуковины"... Событие или метод вызова значения не имеют..
заранее благодарен.
Кто может решить такую задачу (нужен код)? Помогите!!!
на одном листе такая таблица
Фамилия КодА КодАВ СО Значение
иванов Р142 Р1412 цо 350
петров Р142 Р1412 цо 0
сидоров Р142 Р1412 цо 0
хомяков Р142 Р1412 цо 0
иванов Р142 Р1413 цо 0
петров Р142 Р1413 цо 0
сидоров Р142 Р1413 цо 250
хомяков Р142 Р1413 цо 0
иванов Р145 Р1452 цо
петров Р145 Р1452 цо 217
сидоров Р145 Р1452 цо
хомяков Р145 Р1452 цо
иванов Р189 Р189 цз
петров Р189 Р189 цз
сидоров Р189 Р189 цз
хомяков Р189 Р189 цз 137
на другом листе такая
Фамилия КодА КодАВ СО Значение
иванов Р142 Р1412 цо 58
сидоров Р142 Р1412 цо 2
сидоров Р142 Р1413 цо 317
петров Р145 Р1452 цо 309
хомяков Р189 Р189 цз 450
петров Р189 Р189 цз 402
Необходимо, чтобы на третий лист копировалась таблица с первого листа и добавлялись данные(столбец Значения) со второго листа, но так, чтобы эти значения соответствовали фамилии, кодуА и коду АВ , т.е. получилась бы вот такая таблица
Фамилия КодА КодАВ СО Значение план значение факт
иванов Р142 Р1412 цо 350 58
петров Р142 Р1412 цо 0
сидоров Р142 Р1412 цо 0 2
хомяков Р142 Р1412 цо 0
иванов Р142 Р1413 цо 0
петров Р142 Р1413 цо 0
сидоров Р142 Р1413 цо 250 317
хомяков Р142 Р1413 цо 0
иванов Р145 Р1452 цо
петров Р145 Р1452 цо 217 309
сидоров Р145 Р1452 цо
хомяков Р145 Р1452 цо
иванов Р189 Р189 цз
петров Р189 Р189 цз
хомяков Р189 Р189 цз 137 450
на одном листе такая таблица
Фамилия КодА КодАВ СО Значение
иванов Р142 Р1412 цо 350
петров Р142 Р1412 цо 0
сидоров Р142 Р1412 цо 0
хомяков Р142 Р1412 цо 0
иванов Р142 Р1413 цо 0
петров Р142 Р1413 цо 0
сидоров Р142 Р1413 цо 250
хомяков Р142 Р1413 цо 0
иванов Р145 Р1452 цо
петров Р145 Р1452 цо 217
сидоров Р145 Р1452 цо
хомяков Р145 Р1452 цо
иванов Р189 Р189 цз
петров Р189 Р189 цз
сидоров Р189 Р189 цз
хомяков Р189 Р189 цз 137
на другом листе такая
Фамилия КодА КодАВ СО Значение
иванов Р142 Р1412 цо 58
сидоров Р142 Р1412 цо 2
сидоров Р142 Р1413 цо 317
петров Р145 Р1452 цо 309
хомяков Р189 Р189 цз 450
петров Р189 Р189 цз 402
Необходимо, чтобы на третий лист копировалась таблица с первого листа и добавлялись данные(столбец Значения) со второго листа, но так, чтобы эти значения соответствовали фамилии, кодуА и коду АВ , т.е. получилась бы вот такая таблица
Фамилия КодА КодАВ СО Значение план значение факт
иванов Р142 Р1412 цо 350 58
петров Р142 Р1412 цо 0
сидоров Р142 Р1412 цо 0 2
хомяков Р142 Р1412 цо 0
иванов Р142 Р1413 цо 0
петров Р142 Р1413 цо 0
сидоров Р142 Р1413 цо 250 317
хомяков Р142 Р1413 цо 0
иванов Р145 Р1452 цо
петров Р145 Р1452 цо 217 309
сидоров Р145 Р1452 цо
хомяков Р145 Р1452 цо
иванов Р189 Р189 цз
петров Р189 Р189 цз
хомяков Р189 Р189 цз 137 450
Проще простого батенька. Используй фунцкию запись макроса. Зайди в записанный макрос, посмотри, подумай, попробуй разобраться... Для "идеального" копирования сделай цикл который смотрит на последнюю "непустую" ячейку. А если колличество фамилий и их расположение в обоих таблицах идентично, то тут вообще неочем говорить
Вообще люди обращаются к форуму, когда у них что-то не получается, а не когда им лень с этим разбираться (ИМХО). Но если это вопрос жизни и смерти, последняя надежда на спасение (если не сейчас, то ВСЕ, ж..па) - бывают и исключения.
Вообще люди обращаются к форуму, когда у них что-то не получается, а не когда им лень с этим разбираться (ИМХО). Но если это вопрос жизни и смерти, последняя надежда на спасение (если не сейчас, то ВСЕ, ж..па) - бывают и исключения.
sonix555
Если в Control Toolbox зайти в More Controls, можно найти Microsoft Date and Time Picker Control. По крайнер мере так у меня. Думаю, то, что тебе нужно.
Pantera3587
sonix555 хоть и груб, но в некотором роде прав. Я же Вам уже давал код на прошлой странице, очень похожий. Почему бы не разобраться и не модифицировать. Если есть конкретные вопросы или что-то не получается, спрашивайте - поможем.
Если в Control Toolbox зайти в More Controls, можно найти Microsoft Date and Time Picker Control. По крайнер мере так у меня. Думаю, то, что тебе нужно.
Pantera3587
sonix555 хоть и груб, но в некотором роде прав. Я же Вам уже давал код на прошлой странице, очень похожий. Почему бы не разобраться и не модифицировать. Если есть конкретные вопросы или что-то не получается, спрашивайте - поможем.
У меня есть старый файл с группой макросов, которые я писала для организации. Файл для Excell97. Совеременный Excell, открывая его, сообщает, что файл поврежден, и, в результате, выдает разрушенный файл. Приходится работать в старом Excell'е.
Как перенести макросы в новый?
Как перенести макросы в новый?
DHelena
В старом Excell сделай экспорт каждого макроса отдельно (в формате .bas). Запусти новый - импортируй все макросы (в формате .bas) в новый файл - все должно работать. Немного медлено, если макросов много, зато надежно.
Добавлено:
Привет всем,
Такой вопрос. В Excel есть таблички с названиями предприятий. Все они представлены в довольно "кривом" виде. Задача - надо преобразовать все названия к читабельному виду.
Например есть: ООО "ТД "РОГА И КОПЫТА"
надо чтобы получилось ООО "ТД "Рога и копыта"
В моем макросе ключевое место занимает ф-я InStr для поиска позиции кавычек, но она ищет слева-направо, а мне надо наоборот. Можно ли как-либо задать ей напрвление поиска или для этого есть какя-нибудь другая функция?
В старом Excell сделай экспорт каждого макроса отдельно (в формате .bas). Запусти новый - импортируй все макросы (в формате .bas) в новый файл - все должно работать. Немного медлено, если макросов много, зато надежно.
Добавлено:
Привет всем,
Такой вопрос. В Excel есть таблички с названиями предприятий. Все они представлены в довольно "кривом" виде. Задача - надо преобразовать все названия к читабельному виду.
Например есть: ООО "ТД "РОГА И КОПЫТА"
надо чтобы получилось ООО "ТД "Рога и копыта"
В моем макросе ключевое место занимает ф-я InStr для поиска позиции кавычек, но она ищет слева-направо, а мне надо наоборот. Можно ли как-либо задать ей напрвление поиска или для этого есть какя-нибудь другая функция?
mrdime
Перед поиском сделать реверс исходной строки.
Перед поиском сделать реверс исходной строки.
jONES1979
Ок, какой-то стандартной функцией это можно сделать?
Ок, какой-то стандартной функцией это можно сделать?
mrdime
Цитата:
Есть стандартная функция StrReverse(), но честно говоря для решения твоей проблемы можно придумать лучшее решение. Ща подумаю.
Цитата:
Ок, какой-то стандартной функцией это можно сделать?
Есть стандартная функция StrReverse(), но честно говоря для решения твоей проблемы можно придумать лучшее решение. Ща подумаю.
mrdime
Использовать функцию InStrRev()
Использовать функцию InStrRev()
всем привет
кто подскажет как отключить макросом автоматическое вычисление на момент исполнения макроса ну и как потом его обратно включить?)))))
кто подскажет как отключить макросом автоматическое вычисление на момент исполнения макроса ну и как потом его обратно включить?)))))
mrdime
В общем в сторону регулярных выражений нужно копать. Но так как эти RegExp'ы для меня темный лес, 100% рабочий код я тебе написать не могу - батва какая то получается типа
Код: Dim myReg As RegExp
Dim strStr As String, strNew As String
Set myReg = New RegExp
myReg.Pattern = "(^[^""]*[""].)(.+)([""]$)"
strStr = "ООО ТД ""РОГА И КОПЫТА"""
strNew = myReg.Replace(strStr, "$1") & LCase(myReg.Replace(strStr, "$2")) & myReg.Replace(strStr, "$3")
В общем в сторону регулярных выражений нужно копать. Но так как эти RegExp'ы для меня темный лес, 100% рабочий код я тебе написать не могу - батва какая то получается типа
Код: Dim myReg As RegExp
Dim strStr As String, strNew As String
Set myReg = New RegExp
myReg.Pattern = "(^[^""]*[""].)(.+)([""]$)"
strStr = "ООО ТД ""РОГА И КОПЫТА"""
strNew = myReg.Replace(strStr, "$1") & LCase(myReg.Replace(strStr, "$2")) & myReg.Replace(strStr, "$3")
Цитата:
кто подскажет как отключить макросом автоматическое вычисление на момент исполнения макроса ну и как потом его обратно включить?)))))
отбой... заработался и протупил))))
Есть такая таблица
Дата Клиент Сумма
01.12.2006 Иванов 234,00р.
03.05.2006 Сидоров 456,00р.
23.06.2006 Петров 345,00р.
Есть такой макрос
Sub МакросГПР()
' Макрос записан 30.10.2006 (DIREKTOR)
Dim str As String
Dim i As Integer
Dim j As Integer
Dim c As Variant
Dim nr As Variant
str = InputBox("Введите заголовок столбца: ") 'появляется диалоговое окно в поле
'которого либо вводится слово Дата, либо вводится слово Клиент, либо вводится слово Сумма
Range("E1").Select
Range("E1").Formula = str 'здесь должно отобразиться слово из диалогового окна
nr = InputBox("Введите номер строки: ") 'появляется диалоговое окно в поле
'которого вводится любой номер строки, т.е. любая цифра
Range("F1").Select
Range("F1").Formula = "=HLOOKUP(RC[-1],C[-5]:C[-3],nr,FALSE)"
End Sub
Помоготе отредактировать макрос так, чтобы после введения во втором окне номера строки(цифры), этот номер строки отображался в формуле. Так как я записала, он в ячейку F1 записывает следующую формулу:
=ГПР(E1;A:C;nr;ЛОЖЬ), а мне нужно чтобы в этой формуле отображалась бы цифра из диалогового окна, т.е, если я ввожу цифру 3, то формула должна буде выглядеть так
=ГПР(E1;A:C;3;ЛОЖЬ),
если ввожу 41, то так
=ГПР(E1;A:C;41;ЛОЖЬ),
Дата Клиент Сумма
01.12.2006 Иванов 234,00р.
03.05.2006 Сидоров 456,00р.
23.06.2006 Петров 345,00р.
Есть такой макрос
Sub МакросГПР()
' Макрос записан 30.10.2006 (DIREKTOR)
Dim str As String
Dim i As Integer
Dim j As Integer
Dim c As Variant
Dim nr As Variant
str = InputBox("Введите заголовок столбца: ") 'появляется диалоговое окно в поле
'которого либо вводится слово Дата, либо вводится слово Клиент, либо вводится слово Сумма
Range("E1").Select
Range("E1").Formula = str 'здесь должно отобразиться слово из диалогового окна
nr = InputBox("Введите номер строки: ") 'появляется диалоговое окно в поле
'которого вводится любой номер строки, т.е. любая цифра
Range("F1").Select
Range("F1").Formula = "=HLOOKUP(RC[-1],C[-5]:C[-3],nr,FALSE)"
End Sub
Помоготе отредактировать макрос так, чтобы после введения во втором окне номера строки(цифры), этот номер строки отображался в формуле. Так как я записала, он в ячейку F1 записывает следующую формулу:
=ГПР(E1;A:C;nr;ЛОЖЬ), а мне нужно чтобы в этой формуле отображалась бы цифра из диалогового окна, т.е, если я ввожу цифру 3, то формула должна буде выглядеть так
=ГПР(E1;A:C;3;ЛОЖЬ),
если ввожу 41, то так
=ГПР(E1;A:C;41;ЛОЖЬ),
Pantera3587
Range("F1").Formula = "=HLOOKUP(RC[-1],C[-5]:C[-3]," & nr & ",FALSE)"
Range("F1").Formula = "=HLOOKUP(RC[-1],C[-5]:C[-3]," & nr & ",FALSE)"
Хочу усовершенствовать свой предыдущий макрос ГПР. Выделяю любую активную ячейку, в которой появляется значение равное str, затем после нажатия ок выделяется следующая ячейка, которая располагается рядом с выделенной (ActiveCell.Offset(0, 1).Select), потом после введения номера строки выполняется функция ГПР. Вопрос: можно ли в этой функции сделать так, чтобы после скобки шла ссылка на первую выделенную активную ячейку, т.е. если я выделяю ячейку Е2, то функция имела бы вид после выполнения макроса
=ГПР(E2;$A:$C;2;ЛОЖЬ)
если я выделяю ячейку F4, то такой
=ГПР(F4;$A:$C;2;ЛОЖЬ)
Попыталась сделать, но мне выдается следующая формула
=ГПР(0;$A:$C;2;ЛОЖЬ)
Вот мой как бы усовершенствованный макрос
Sub МакросГПР2()
' Макрос записан 30.10.2006 (DIREKTOR)
Dim str As String
Dim i As Integer
Dim j As Integer
Dim c As Variant
Dim nr As Variant
str = InputBox("Введите заголовок столбца: ") 'появляется диалоговое окно в поле
'которого либо вводится слово Дата, либо вводится слово Клиент, либо вводится слово Сумма
ActiveCell.Select
ActiveCell.Formula = str
'выделение рядом стоящей ячейки
ActiveCell.Offset(0, 1).Select
i = ActiveCell ' здесь вроде как присваивается переменной выделенная первой активная ячейка, выделенная первой
'появляется диалоговое окно в поле
'которого вводится любой номер строки, т.е. любая цифра
nr = InputBox("Введите номер строки: ")
'здесь используется функция ГПР
ActiveCell.FormulaR1C1 = "=HLOOKUP(" & i & ",C1:C3," & nr & ",FALSE)"
End Sub
=ГПР(E2;$A:$C;2;ЛОЖЬ)
если я выделяю ячейку F4, то такой
=ГПР(F4;$A:$C;2;ЛОЖЬ)
Попыталась сделать, но мне выдается следующая формула
=ГПР(0;$A:$C;2;ЛОЖЬ)
Вот мой как бы усовершенствованный макрос
Sub МакросГПР2()
' Макрос записан 30.10.2006 (DIREKTOR)
Dim str As String
Dim i As Integer
Dim j As Integer
Dim c As Variant
Dim nr As Variant
str = InputBox("Введите заголовок столбца: ") 'появляется диалоговое окно в поле
'которого либо вводится слово Дата, либо вводится слово Клиент, либо вводится слово Сумма
ActiveCell.Select
ActiveCell.Formula = str
'выделение рядом стоящей ячейки
ActiveCell.Offset(0, 1).Select
i = ActiveCell ' здесь вроде как присваивается переменной выделенная первой активная ячейка, выделенная первой
'появляется диалоговое окно в поле
'которого вводится любой номер строки, т.е. любая цифра
nr = InputBox("Введите номер строки: ")
'здесь используется функция ГПР
ActiveCell.FormulaR1C1 = "=HLOOKUP(" & i & ",C1:C3," & nr & ",FALSE)"
End Sub
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
Предыдущая тема: Стоит ли переходить с Билдера на Делфи?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.