Вопрос № 112568: Уважаемые эксперты!
Возник вопрос по VBA. У меня имеются два листа открытой рабочей книги.
На первом листе список персонала предприятия и цеха, а на втором количество проходов каждого сотрудника
пример: лист1: |1столбец |2 столбец|..........Вопрос № 112636: добрый день.
появился странный эффект : excel, при выполнения макроса, заявляет, что не видит функции format, trim, left ...(не находит проект или библиотеку) . полная переустановка office 2003 не помогла. прошу помочь, решить эту головоломку. за...Вопрос № 112645: 1 Как правильно в Аксесе сделать обновление подчинённой формы?
2 То же самое для списков, в списках и формах исп. запроси с выражениями вторую неделю долблюсь то обновляются то нет...
Вопрос № 112.568
Уважаемые эксперты!
Возник вопрос по VBA. У меня имеются два листа открытой рабочей книги.
На первом листе список персонала предприятия и цеха, а на втором количество проходов каждого сотрудника
пример: лист1: |1столбец |2 столбец|........
Эл.цех Вася Петров
Химцех Аня Филатова
. .
. .
На 2-м листе количество их проходов лист2:|1 столбец|2cтолбец |Проход|....
Пусто Вася Петров вход
Пусто Вася Петров выход
. Аня вход
. Аня вход
Необходимо отметить в 1столбце 2-го листа(где пустые ячейки) цеха на всех лиц.Проблема заключается в очень больших списках в 1-м листе: порядка 1500 записей, а во 2-м листе -около 4000. Я сделал два вложенных цикла по выборке записей лица из 1-го листа и поиском его проходов во 2-м листе- в случае его обнаружения ему дописывается его цех, но из-за больших списков у меня зависает макрос выборки в Excel. Подскажите, пожалуйста, можно ли воспользоваться какими-либо ссылками в 1 -м листа, чтобы пребирая в цикле
список 2-го листа делать пометки для найденых лиц из 1 листа.
Я использовал поиск и сравнение лиц в 2-х листах по ФИО.
Прошу учесть что я только начал изучать VBA.
Отвечает: Денисов Сергей Иванович
Здравствуйте, Соколов Вадим Владимирович!
1. В Вашем случае выелять листы в цикле (Sheets("Лист1").Select) не нужно.
2. К ячейкам можно обращаться так: Sheets("Лист1").Cells(I + 1, 1).Value
3. Можно не использовать промежуточные переменные ORG, FIO, POISK
4. Опреелить диапазон листов можно другим способом через Worksheets("Лист1").UsedRange.Rows.Count
Я думаю будет работать намного быстрее ...
Не совсем понял ля чего нужет переход на "pout"
В итоге цикл можно записать так:
Приложение:
Ответ отправил: Денисов Сергей Иванович (статус: 1-ый класс)
Ответ отправлен: 06.12.2007, 11:22 Оценка за ответ: 5
Отвечает: HookEst
Здравствуйте, Соколов Вадим Владимирович!
можно сделать все гораздо проще.
Если Вы во все ячейки цеха второго листа поставите формулу:
=ИНДЕКС(Лист1!C;ПОИСКПОЗ(Лист2!RC[1];Лист1!C[1];0))
то названия цехов будут автоматически находится по фамилии и отображатся.
если все ячейки менять не хочется, а только пустые, то это сделает нехитрый макрос:
Sub t()
Worksheets("Лист2").Columns(1).SpecialCells(xlCellTypeBlanks).FormulaR1C1Local = "=ИНДЕКС(Лист1!C;ПОИСКПОЗ(Лист2!RC[1];Лист1!C[1];0))"
End Sub
вот и все. Только теперь, если Васю Петрова переведут в другой цех, на листе Проходов название его цеха тоже поменяется.
Если все же нужны константные значения, то Ctrl+C и Специальная вставка... все сделают.
Если бы на первом листе фамилия у вас стояла бы левее чем цех, можно использовать формулу ВПР.
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 06.12.2007, 12:33 Оценка за ответ: 5
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Соколов Вадим Владимирович!
http://ifolder.ru/3765138 по этой ссылке Вы найдете надстройку Excel которая создавалась для решения подобной задачи.
код доступен для изучения
Евгений.
P.S. такие задачи лучше решать в базах данных:
http://ifolder.ru/3375185 ссылка для ознакомления.
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 06.12.2007, 19:52 Оценка за ответ: 5
Вопрос № 112.636
добрый день.
появился странный эффект : excel, при выполнения макроса, заявляет, что не видит функции format, trim, left ...(не находит проект или библиотеку) . полная переустановка office 2003 не помогла. прошу помочь, решить эту головоломку. заранее благодарен.
os windows xp sp2, office proffesional 2003. все лицензионное.
Отправлен: 06.12.2007, 15:55
Вопрос задал: Lanbob (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Файфель Борис Леонидович
Здравствуйте, Lanbob!
Это очень похоже на то, что у проекта есть неразрешенная ссылка(Reference). Отключи и все будет ОК!
Ответ отправил: Файфель Борис Леонидович (статус: 1-ый класс)
Ответ отправлен: 06.12.2007, 21:55
Вопрос № 112.645
1 Как правильно в Аксесе сделать обновление подчинённой формы?
2 То же самое для списков, в списках и формах исп. запроси с выражениями вторую неделю долблюсь то обновляются то нет
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Kyrikinkvazimoda!
Для получения ответа обратитесь к странице:
http://rusfaq.ru/info/question/111673
Вопрос там другой, но ответ на него я думаю Вам подойдет
возникнут еще вопросы пишите