Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 3
1

Index vs Match + 2 criteria + Ctrl-Shift-Enter

21.03.2016, 19:17. Показов 974. Ответов 3

Здравствуйте!
Собственно вопрос в теме. Нужно через ИНДЕКС + ПОИСКПОЗ подтянуть значения в столбец с помощью VBA. Т.к используется 2 условия, в экселе формула вводится методом Ctrl-Shift-Enter.
В строке формул, формула вылядит так:
{=INDEX(Data!$A:$C;MATCH(Fill!A2&Fill!B2; Data!A:A&Data!B:B;0);3)}

Но как это прописать в VBA?

Сейчас есть это, и это не работает. Ругается так: "Run-time error '1004': Unable to get the Match property of the WorksheetFunction class"

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub IndMatch()
 
Set PriceRng = ThisWorkbook.Sheets("Fill").Range(Range("C2"), Range("C2").End(xlDown)).Offset(0, 1)
Set ProdCodeRng = ThisWorkbook.Sheets("Fill").Range(Range("C2"), Range("C2").End(xlDown)).Offset(0, -2)
Set SubCodeRng = ThisWorkbook.Sheets("Fill").Range(Range("C2"), Range("C2").End(xlDown)).Offset(0, -1)
 
For Each i In PriceRng
    For Each P In ProdCodeRng
        For Each s In SubCodeRng
            If i = "" Then
                result = Application.WorksheetFunction.Index(Sheets("Data").Range("A:C"), Application.WorksheetFunction.Match(P & s, Application.Union(Sheets("Data").Range("A:A"), Sheets("Data").Range("B:B")), 0), 3)
                Cells(i.Row, i.Column) = result
            End If
        Next
    Next
Next
 
End Sub
Миниатюры
Index vs Match + 2 criteria + Ctrl-Shift-Enter  
Вложения
Тип файла: xlsx Index_Match VBA.xlsx (14.1 Кб, 6 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2016, 19:17
Ответы с готовыми решениями:

Как отследить нажаты ли Shift, Ctrl, Alt?
Например, если я хочу узнать при обработке события Worksheet_Change, что было нажато при изменении...

Что означает слова LARGE, INDEX, MATCH в макросе?
Sub Макрос1() Range("b1:b3").FormulaArray = _...

Есть ли в VBA оператор, который работает как VLOOKUP ну или Index и Match?
Всем здрасти! Простенький вопросик, есть ли в VBA оператор, который работает как VLOOKUP ну или...

Как в SendKeys прописать сочетания Alt+Shift и Shift+Enter
Как в SendKeys прописать сочетания Alt+Shift и Shift+Enter ? Может где-то можно найти полное...

3
5454 / 1483 / 365
Регистрация: 23.12.2010
Сообщений: 2,225
Записей в блоге: 1
25.03.2016, 09:19 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Index_Match_Аналог()
    Dim i&, j&, A, B, Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    A = Sheets("Data").[A1].CurrentRegion.Value
    For i = 2 To UBound(A): Dic(A(i, 1) & A(i, 2)) = A(i, 3): Next
    With Sheets("Fill")
        B = .[A1].CurrentRegion.Value
        For i = 2 To UBound(B)
            If Dic.Exists(B(i, 1) & B(i, 2)) Then .Cells(i, 4) = Dic(B(i, 1) & B(i, 2))
        Next i
    End With
    Set Dic = Nothing
End Sub
0
15038 / 6362 / 1726
Регистрация: 24.09.2011
Сообщений: 9,971
25.03.2016, 18:37 3
my_marianna, до кучи
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub bb()
Dim v(), i, cl As Collection
  With Sheets("Data")
    v = .Range("A2", .Cells(.Rows.Count, "C").End(xlUp)).Value2
  End With
  Set cl = New Collection
  On Error Resume Next
  For i = 1 To UBound(v)
    cl.Add v(i, 3), v(i, 1) & v(i, 2)
  Next
  On Error GoTo 0
  With Sheets("Fill")
    v = .Range("A2", .Cells(.Rows.Count, "B").End(xlUp)).Value2
    ReDim w(1 To UBound(v), 1 To 1)
    For i = 1 To UBound(v)
      w(i, 1) = cl(v(i, 1) & v(i, 2))
    Next
    .Range("D2").Resize(UBound(w)).Value2 = w
  End With
End Sub
1
6859 / 2794 / 529
Регистрация: 19.10.2012
Сообщений: 8,524
25.03.2016, 20:30 4
Алексей, спасибо за вариант с коллецией, а то всё словари, словари А ведь бывают и МАКи...
Но
Visual Basic
1
On Error GoTo 0
лучше передвинуть в конец - не факт что там всегда будут все Product Code.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2016, 20:30

Смена языков ввода по Ctrl-#, а не по Ctrl-Shift-#
Добрый день, Использую несколько языков ввода, и удобно было бы переключать раскладку клавы по...

Ctrl+Shift vs Alt+Shift
Собственно сабж. Я использую Ctrl+Shift.

Клавиша Enter и Enter + Ctrl
Здравствуйте. Есть код отправки аякс на обработчик, из textarea клавишей Enter. Информация...

Правый Ctrl+shift
Привет, ребят! Может кто сталкивался? Не работает правый Ctrl+Shift для переключения раскладки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru