Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.11.2008, 19:18   #1
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию Неразрешимая задача?? - Выбор значения из ячейки

Скорее всего врядли кто справиться с этим... но есть искорка того, что полет мысли действительно безграничен...
Суть в следущем:
Есть значения в ячейках в нескольких столбцах, в которых данные забиты через Alt+Enter... нужно выбирать значение в строчку по значению из первого столбца и вставлять соответствующее зачение второго столбца в листы с тем же названием...

ну или просто на другой лист по определенному значению...

Пример в аттаче...
Вложения
Тип файла: rar пример.rar (1.9 Кб, 33 просмотров)
xamillion вне форума
Старый 29.11.2008, 23:50   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если есть тревожное сообщение о нехвватке строк, скопируйте строку 3 нужное количество раз.

кстати, для всех, кто интересуется особенностями работы формул.
при решении даной задачи столкнулся с таким интересным фактом:
на листах 1,2...12 в ячейке Д1 определяю название листа с помощью функции ЯЧЕЙКА("имяфайла"). Как только я переходил на любой лист и вносил изменения в любую ячейку, на всех остальных листах ЯЧЕЙКА("имяфайла") выдавала #ЗНАЧ. Стоило нажать "пересчитать лист" - все становилось на свои места.
пришлось навесить насильный перечет листа при каждой смене листов.
Код:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Sh.Calculate
End Sub
Теперь все постоянно красиво посчитано, но появилась другая проблема. нельзя ничего скопировать с листа на лист.
если тихонько вписать этот код в книгу любому из сотрудников, он может тихо сойти с ума пытаясь скопировать чего-нибудь с листа на лист.
прикол такой: отмечает ячейку (диапазон), копирует, переходит на другой лист, вставляет... опа, а ничего не вставляется. возвращается на исходный лист... снова опа, а ничего не отмечено (нет мигающей рамки вокруг ранее отмеченных ячеек). отмечает снова, копирует, переходит на другой лист, вставляет... дальше вы знаете. интересно кто сколько попыток сделает.
Вложения
Тип файла: rar пример7.rar (11.8 Кб, 35 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 30.11.2008, 02:48   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Неразрешимая задача
Excel позволяет решать задачи намного сложнее Вашей.

Вот ещё один способ решения Вашей задачи (с использованием только макросов):
Вложения
Тип файла: rar предприятия 2.rar (33.6 Кб, 43 просмотров)
EducatedFool вне форума
Старый 30.11.2008, 03:18   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

> Вчера, 23:50
> IgorGO

Прошу прощения, а где вообще эти "сотрудники" болезные? Просто (ну, например, в поликлинике; на почте) я не видел, чтобы использовали MS Excel, да ещё столь виртуозно!
Sasha_Smirnov вне форума
Старый 30.11.2008, 05:02   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Sh.Calculate
End Sub
Теперь все постоянно красиво посчитано, но появилась другая проблема. нельзя ничего скопировать с листа на лист.
Действительно, метод Calculate зачем-то сбрасывает значение свойства Application.CutCopyMode...

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

Теперь можно копировать с листа на лист:
(но только между копированием с одного листа и вставкой на другой нельзя активировать другие листы)

Код:
Dim shcopy As Worksheet

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    res = Application.CutCopyMode:
    Sh.Calculate

    If shcopy Is Nothing Then Exit Sub
    Application.EnableEvents = False: Application.ScreenUpdating = False
    shcopy.Activate:
    Select Case res
        Case xlCopy: Selection.Copy
        Case xlCut: Selection.Cut
        Case False:
    End Select
    Sh.Activate
    Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Set shcopy = IIf(Application.CutCopyMode, Sh, Nothing)
End Sub
EducatedFool вне форума
Старый 01.12.2008, 20:24   #6
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Ух ты ребят!!! Я все больше и больше подчерпываю опыта у Вас... и я уже все меньше и меньше обращаюсь за помощью... Возможности Excel'я просто поражают... особенно когда нужно что-то очень быстро обрабатывать... спасибо за помощь...
xamillion вне форума
Старый 02.12.2008, 18:13   #7
Konstantin_Z
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 65
По умолчанию

Ув., IgorGO, описанная Вами проблема легко решается, если вместо ЯЧЕЙКА("имяфайла") писать ЯЧЕЙКА("filename")
Konstantin_Z вне форума
Старый 02.12.2008, 21:41   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию 2 Konstantin_Z

Спасибо, решается, да только частично(((
да, #ЗНАЧ исчез.
Но когда я на двух листах пишу =ЯЧЕЙКА("filename"). На одном листе жму пересчет, перехожу на другой лист а там =ЯЧЕЙКА("filename") выдает имя второго листа, где произошел последний перещет, а не своего(((
Особенность работы эксель. Как по мне - то баг программистов.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 03.12.2008, 10:52   #9
Konstantin_Z
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 65
По умолчанию

Ув. IgorGO, попробуйте сделать так:
=ЯЧЕЙКА("filename";B5)

вместо B5 можно любую ячейку текущего листа
Konstantin_Z вне форума
Старый 03.12.2008, 11:44   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

спасибо!
все стало на свои места и логика работы функции теперь абсолютно ясна.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выбор значения SveSve Microsoft Office Excel 2 16.04.2008 19:13
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39
Печать различных доков- от значения ячейки Sum Microsoft Office Excel 1 02.04.2008 18:10
Выбор значения из массива по столбцу и строке Almaas Помощь студентам 4 25.01.2008 14:56