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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 05:48   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Поиск на другом листе

Здравствуйте, уважаемые программисты. Нужно на листе "Сводка", при заполнении ячейки в столбце Таб. №, заполнить ячейку в столбце Водитель данными из листа "Данные". Напишите пожалуйста как это сделать.
Написанный код не находит ячейку с нужным таб. №.

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F3:F100")) Is Nothing Then
If Target(1, 1).Value = 0 Then 'Очищаю соседнюю ячейку
    On Error Resume Next
    Intersect(Intersect(Intersect(Target, [F3:F100]), _
                        Target.Worksheet.UsedRange.SpecialCells(xlCellTypeBlanks)).EntireRow, _
                        [g:g]).ClearContents
Else
'Заполняю соседнюю ячейку данными с листа "Данные"
TN = Target(1, 1).Value
    With Sheets("Данные")
         m = 60
    While Cells(m, 9) <> TN
        m = m - 1
    Wend
V = Cells(m, 10)
    End With

Target(1, 2).Value = V

End If
End If
End Sub
Вложения
Тип файла: zip Заполнить ФИО.zip (28.1 Кб, 18 просмотров)
agregator вне форума Ответить с цитированием
Старый 03.09.2010, 11:10   #2
roplius
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 15
По умолчанию

Упростил макрос. Но эту задачу можно без макросов решить
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 6 Then Exit Sub
Target(1, 2).FormulaR1C1 = [g2].FormulaR1C1
If IsError(Target(1, 2)) Then Target(1, 2) = "" Else Target(1, 2) = Target(1, 2).Value
End Sub
Вложения
Тип файла: zip Zapolnenije.zip (24.7 Кб, 21 просмотров)
roplius вне форума Ответить с цитированием
Старый 03.09.2010, 12:44   #3
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Roplius, спасибо за помощь, всё работает как надо, решение хорошее.
И всёже может кто нибудь подсказать, можно ли заставить работать мой код.
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F3:F100")) Is Nothing Then
'Заполняю соседнюю ячейку данными с листа "Данные"
TN = Target(1, 1).Value
    With Sheets("Данные")
         m = 60
    While Cells(m, 9) <> TN
        m = m - 1
    Wend
V = Cells(m, 10)
    End With

Target(1, 2).Value = V

End If
End Sub
Т.е. если данные находятся на листе "Сводка", то вот такой код работает
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F3:F100")) Is Nothing Then
'Заполняю соседнюю ячейку данными с листа "Данные"
TN = Target(1, 1).Value

         m = 60
    While Cells(m, 9) <> TN
        m = m - 1
    Wend
V = Cells(m, 10)


Target(1, 2).Value = V

End If
End Sub
Как сделать, чтобы работало с данными расположенными на другом листе?
agregator вне форума Ответить с цитированием
Старый 03.09.2010, 13:00   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

А если точечки перед Cells поставить:
Код:
With Sheets("Данные")
    m = 60
    While .Cells(m, 9) <> TN
        m = m - 1
    Wend
    V = .Cells(m, 10)
End With
nilem вне форума Ответить с цитированием
Старый 03.09.2010, 13:14   #5
roplius
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 15
По умолчанию

Цитата:
А если точечки перед Cells поставить:
Должно сработать

Последний раз редактировалось roplius; 03.09.2010 в 13:20. Причина: opozdal s otvetom
roplius вне форума Ответить с цитированием
Старый 03.09.2010, 13:57   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
Радость

nilem и roplius, спасибо за подсказку. Поставил точки и всё заработало.
agregator вне форума Ответить с цитированием
Старый 25.12.2010, 01:04   #7
putinka
Новичок
Джуниор
 
Регистрация: 24.12.2010
Сообщений: 2
Смущение выборка

очень нужна ваша помощь!
задачка простейшая) но решить не получатся... массив+формула не достаточно, советуют гиперссылки, но у меня не получается( мне кажется, удобнее был бы макрос..

Суть задачки: в Книге есть несколько Листов,
нужно с первого листа ("общий_список") выбрать строки в зависимости от значения столбца "вариант",
и разместить на соответствующих листах (при необходимости нужно создать доп.лист).

*файл прилагается
Вложения
Тип файла: rar select.rar (2.8 Кб, 16 просмотров)

Последний раз редактировалось putinka; 25.12.2010 в 01:40.
putinka вне форума Ответить с цитированием
Старый 25.12.2010, 17:53   #8
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Вот, вроде работает.
Вложения
Тип файла: zip selectРаскидать по вариантам.zip (16.3 Кб, 26 просмотров)
nilem вне форума Ответить с цитированием
Старый 25.12.2010, 19:41   #9
putinka
Новичок
Джуниор
 
Регистрация: 24.12.2010
Сообщений: 2
Хорошо

"вроде" )))))
очень здорово работает!!!!!!!!!!
nilem, СПАСИБО ОГРОМНОЕ! за помощь и оперативность!!!!!!!!!!!!!!!
putinka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сверка значений на другом листе подстановка подходящего marc-nikita Microsoft Office Excel 5 07.02.2010 14:10
Замена листа с сохранением его имени на другом листе akd2009 Microsoft Office Excel 2 03.02.2010 15:52
Перенос данных из строк в массив на другом листе akd2009 Microsoft Office Excel 2 15.12.2009 15:58
ячейка на одном листе, в которую необходимо подставлять данные из столбца, находящегося на другом листе Ирина Водолагина Microsoft Office Excel 4 04.03.2009 23:38
Ссылка на ячейку в другом листе... Shavminator Microsoft Office Excel 3 23.07.2008 16:52