Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/VLookup в коде некорректно работает - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » VLookup в коде некорректно работает (Формулы/Formulas)
VLookup в коде некорректно работает
Combat1971 Дата: Пятница, 27.04.2018, 18:53 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
В листе хронометражная карта выделен зеленным цветом есть ниспадающий список при выборе значения (2 столбец листа Прейскурант) вставляется данные в зеленные ячейки и идет пересчет
но есть проблема, если значение в списке одинаковое то выбирается только первое верхнее
т.е. если выбрать 280262201 их там два, выбрать второе там где Сидоров, высвечивается Петров ну и в ост. желтых ячейках по аналогии

и еще есть ли пример кода для следующей задачи
если двойным кликом по ячейки 2 столбца листа Прейскуранта щелкнуть то как реализовать попадание этого значение в ячейку второго листа в позицию С8, с отображением уже пересчитанной Хронометражной карты, в дальнейшем первые 6 столбцов будут закрыты от изменений
код собирал по кускам с разных мест, здесь уже помогли, но дальше еще нужна помощь
Cells(9, 3) = WorksheetFunction.VLookup(Target, [КодСИ].Resize(, 7), 6, 0) подскажите предназначение 7 в данном коде, его как раз мне и скинули
К сообщению приложен файл: 00000.xlsm(37.3 Kb)


Сообщение отредактировал Combat1971 - Пятница, 27.04.2018, 18:54
 
Ответить
СообщениеВ листе хронометражная карта выделен зеленным цветом есть ниспадающий список при выборе значения (2 столбец листа Прейскурант) вставляется данные в зеленные ячейки и идет пересчет
но есть проблема, если значение в списке одинаковое то выбирается только первое верхнее
т.е. если выбрать 280262201 их там два, выбрать второе там где Сидоров, высвечивается Петров ну и в ост. желтых ячейках по аналогии

и еще есть ли пример кода для следующей задачи
если двойным кликом по ячейки 2 столбца листа Прейскуранта щелкнуть то как реализовать попадание этого значение в ячейку второго листа в позицию С8, с отображением уже пересчитанной Хронометражной карты, в дальнейшем первые 6 столбцов будут закрыты от изменений
код собирал по кускам с разных мест, здесь уже помогли, но дальше еще нужна помощь
Cells(9, 3) = WorksheetFunction.VLookup(Target, [КодСИ].Resize(, 7), 6, 0) подскажите предназначение 7 в данном коде, его как раз мне и скинули

Автор - Combat1971
Дата добавления - 27.04.2018 в 18:53
Hugo Дата: Пятница, 27.04.2018, 19:07 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2787
Репутация: 631 ±
Замечаний: 0% ±

7 в этом коде не нужно :)
Но ведь тот код, что я скинул был другой! И там было нужно именно 7. Ну а тут достаточно 6.
По VLOOKUP() - она всегда берёт первое совпадение, это не исправить, используйте что-то другое.
P.S. Посмотрел код в файле - ну чтоб не путаться можно так и оставить всюду эту 7.
А нужна она потому, что для VLOOKUP() нужно давать всю таблицу, а не только первый столбец - вот этим .Resize(, 7) я его и расширил на сколько нужно.
Как решить задачу в целом таким подходом - я не знаю. Нужно кардинально что-то менять.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 27.04.2018, 19:18
 
Ответить
Сообщение7 в этом коде не нужно :)
Но ведь тот код, что я скинул был другой! И там было нужно именно 7. Ну а тут достаточно 6.
По VLOOKUP() - она всегда берёт первое совпадение, это не исправить, используйте что-то другое.
P.S. Посмотрел код в файле - ну чтоб не путаться можно так и оставить всюду эту 7.
А нужна она потому, что для VLOOKUP() нужно давать всю таблицу, а не только первый столбец - вот этим .Resize(, 7) я его и расширил на сколько нужно.
Как решить задачу в целом таким подходом - я не знаю. Нужно кардинально что-то менять.

Автор - Hugo
Дата добавления - 27.04.2018 в 19:07
Combat1971 Дата: Пятница, 27.04.2018, 20:00 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
т. е в моём случае заменить функцию ВПР не удастся, кардинально менять у меня знаний не хватает
если бы пример похожий может быть и переделал бы...
но все равно спасибо за помощь
 
Ответить
Сообщениет. е в моём случае заменить функцию ВПР не удастся, кардинально менять у меня знаний не хватает
если бы пример похожий может быть и переделал бы...
но все равно спасибо за помощь

Автор - Combat1971
Дата добавления - 27.04.2018 в 20:00
Hugo Дата: Пятница, 27.04.2018, 20:03 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2787
Репутация: 631 ±
Замечаний: 0% ±

Как вариант для минимальной переделки всего - выбирать в списке порядковый номер (они там в таблице есть), а всё остальное тянуть как сейчас.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеКак вариант для минимальной переделки всего - выбирать в списке порядковый номер (они там в таблице есть), а всё остальное тянуть как сейчас.

Автор - Hugo
Дата добавления - 27.04.2018 в 20:03
Combat1971 Дата: Пятница, 27.04.2018, 20:11 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
прейскурант иногда корректируется, могут добавляться или удалятся строки с последующим восстановлением нумерации, это не собьет код?, конечно не желательно бы так
 
Ответить
Сообщениепрейскурант иногда корректируется, могут добавляться или удалятся строки с последующим восстановлением нумерации, это не собьет код?, конечно не желательно бы так

Автор - Combat1971
Дата добавления - 27.04.2018 в 20:11
Hugo Дата: Пятница, 27.04.2018, 20:17 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2787
Репутация: 631 ±
Замечаний: 0% ±

Ну если следить за корректностью [КодСИ] - то не должен.
Правда я затрудняюсь сказать как привязать выпадающий список номеров к диапазону [КодСИ] - тут формулистов нужно спросить...
P.S.Сам нашёл:
Код
=СМЕЩ(КодСИ;0;-1)


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 27.04.2018, 20:22
 
Ответить
СообщениеНу если следить за корректностью [КодСИ] - то не должен.
Правда я затрудняюсь сказать как привязать выпадающий список номеров к диапазону [КодСИ] - тут формулистов нужно спросить...
P.S.Сам нашёл:
Код
=СМЕЩ(КодСИ;0;-1)

Автор - Hugo
Дата добавления - 27.04.2018 в 20:17
Hugo Дата: Пятница, 27.04.2018, 20:32 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2787
Репутация: 631 ±
Замечаний: 0% ±

Посмотрите файл. Выбор номеров белым по белому в C4 - чтоб не печаталось.
К сообщению приложен файл: 00000-1-.xlsm(38.4 Kb)


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 27.04.2018, 20:33
 
Ответить
СообщениеПосмотрите файл. Выбор номеров белым по белому в C4 - чтоб не печаталось.

Автор - Hugo
Дата добавления - 27.04.2018 в 20:32
Combat1971 Дата: Пятница, 27.04.2018, 21:06 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
а вот если без выпадающего списка, просто двойной клик по строке или ячейке в листе прейскурант и значение попадает на лист Хром. карта и там все расчитывется
так не проще будет
вот нашел такой код.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
    Cancel = True
    
End Sub
[/vba]

он правда срабатывает на любую ячейку, как закрепить на 2 столбец, дальше буду думать что делать с переменной ячейки


Сообщение отредактировал Combat1971 - Пятница, 27.04.2018, 21:07
 
Ответить
Сообщениеа вот если без выпадающего списка, просто двойной клик по строке или ячейке в листе прейскурант и значение попадает на лист Хром. карта и там все расчитывется
так не проще будет
вот нашел такой код.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
    Cancel = True
    
End Sub
[/vba]

он правда срабатывает на любую ячейку, как закрепить на 2 столбец, дальше буду думать что делать с переменной ячейки

Автор - Combat1971
Дата добавления - 27.04.2018 в 21:06
Combat1971 Дата: Пятница, 27.04.2018, 21:23 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
поправьте меня что не так
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.[b:b], Cancel As Boolea)
[/vba]
 
Ответить
Сообщениепоправьте меня что не так
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.[b:b], Cancel As Boolea)
[/vba]

Автор - Combat1971
Дата добавления - 27.04.2018 в 21:23
Combat1971 Дата: Пятница, 27.04.2018, 21:32 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
вроде работает так
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Not Intersect(Target, [B1:B2003]) Is Nothing Then
       Cancel = True
       MsgBox "Áûë ïðîèçâåäåí äâîéíîé ùåë÷îê ïî ÿ÷åéêå " & Target.Address
    End If
End Sub
[/vba]
 
Ответить
Сообщениевроде работает так
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Not Intersect(Target, [B1:B2003]) Is Nothing Then
       Cancel = True
       MsgBox "Áûë ïðîèçâåäåí äâîéíîé ùåë÷îê ïî ÿ÷åéêå " & Target.Address
    End If
End Sub
[/vba]

Автор - Combat1971
Дата добавления - 27.04.2018 в 21:32
Combat1971 Дата: Пятница, 27.04.2018, 22:11 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вообщем все сделал, что хотел
код на стр. Хрон. карты
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Not Intersect(Target, [B1:B2003]) Is Nothing Then
       Cancel = True
       'MsgBox "Áûë ïðîèçâåäåí äâîéíîé ùåë÷îê ïî ÿ÷åéêå " & Target.Address
        Worksheets("Õðîíîìåòðàæíàÿ êàðòà").Cells(8, 3).Value = Target.Value
        Worksheets("Õðîíîìåòðàæíàÿ êàðòà").Select
       End If
End Sub
[/vba]

Большое спасибо Hugo за помощь!!!


Сообщение отредактировал Combat1971 - Пятница, 27.04.2018, 22:12
 
Ответить
СообщениеВообщем все сделал, что хотел
код на стр. Хрон. карты
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Not Intersect(Target, [B1:B2003]) Is Nothing Then
       Cancel = True
       'MsgBox "Áûë ïðîèçâåäåí äâîéíîé ùåë÷îê ïî ÿ÷åéêå " & Target.Address
        Worksheets("Õðîíîìåòðàæíàÿ êàðòà").Cells(8, 3).Value = Target.Value
        Worksheets("Õðîíîìåòðàæíàÿ êàðòà").Select
       End If
End Sub
[/vba]

Большое спасибо Hugo за помощь!!!

Автор - Combat1971
Дата добавления - 27.04.2018 в 22:11
Hugo Дата: Пятница, 27.04.2018, 22:11 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2787
Репутация: 631 ±
Замечаний: 0% ±

Попробуйте так (кликать строго по [КодСИ]):
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [КодСИ]) Is Nothing Then
        Cancel = True
        With Sheets("Хронометражная карта")
            .Cells(8, 3) = Target
            .Cells(9, 3) = Target.Offset(, 5)
            .Cells(14, 1) = Target.Offset(, 7)
            .Cells(19, 16) = Target.Offset(, 4)
            .Cells(7, 3) = Target.Offset(, 2) & " " & Target.Offset(, 3)
        End With
    End If
End Sub
[/vba]
Не уверен правильные ли данные вытягивает.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 27.04.2018, 22:35
 
Ответить
СообщениеПопробуйте так (кликать строго по [КодСИ]):
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [КодСИ]) Is Nothing Then
        Cancel = True
        With Sheets("Хронометражная карта")
            .Cells(8, 3) = Target
            .Cells(9, 3) = Target.Offset(, 5)
            .Cells(14, 1) = Target.Offset(, 7)
            .Cells(19, 16) = Target.Offset(, 4)
            .Cells(7, 3) = Target.Offset(, 2) & " " & Target.Offset(, 3)
        End With
    End If
End Sub
[/vba]
Не уверен правильные ли данные вытягивает.

Автор - Hugo
Дата добавления - 27.04.2018 в 22:11
StoTisteg Дата: Суббота, 28.04.2018, 11:49 | Сообщение № 13
Группа: Авторы
Ранг: Ветеран
Сообщений: 758
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
он правда срабатывает на любую ячейку, как закрепить на 2 столбец

[vba]
Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    If Target.Column=2 then MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
    Cancel = True
    
End Sub
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
он правда срабатывает на любую ячейку, как закрепить на 2 столбец

[vba]
Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    If Target.Column=2 then MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
    Cancel = True
    
End Sub
[/vba]

Автор - StoTisteg
Дата добавления - 28.04.2018 в 11:49
Мир MS Excel » Вопросы и решения » Вопросы по Excel » VLookup в коде некорректно работает (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!