|
|||||||
проверка наличия значения по 2м столбцам в таблице
Время создания: 16.03.2019 23:43
Текстовые метки: vba_excel, sheet, find
Раздел: Разные закладки - VBA - Excel - Листы - Поиск по листу
Запись: xintrea/mytetra_db_adgaver_new/master/base/15307788129pa4aqp2ob/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
'====================================================================================== '##### проверка наличия значения по 2м столбцам в таблице ' 'Sub test_FnCheck_Val1_Val2() 'dd = FnCheck_Val1_Val2(ThisWorkbook.Sheets("Data"), 1, 2, "04.07.2018", "a") 'End Sub '-------------------------------------------------------------------------------------- 'возврат номера строки Function FnCheck_Val1_Val2(ByVal oSh As Worksheet, _ ByVal lngCln1 As Integer, _ ByVal lngCln2 As Integer, _ ByVal vVal1 As Variant, _ ByVal vVal2 As Variant) As Long Dim i As Long, lngRowEnd As Long Dim vValTemp1 As Variant, vValTemp2 As Variant 'переменные для проверки Dim aVal1 As Variant, aVal2 As Variant 'массивы для проверки 'сбросфильтра Фильтр = w_Sort_Filter.FnFiltersSheet(oSh, 1, 1) 'приводим к общему регистру vVal1 = UCase(vVal1) vVal2 = UCase(vVal2) With oSh 'количество строк по первому столбцу lngRowEnd = .Columns(lngCln1).Rows(1048576).End(xlUp).row 'если менее 2х, то проверка по второму столбцу If lngRowEnd < 2 Then lngRowEnd = .Columns(lngCln2).Rows(1048576).End(xlUp).row 'если менее 2х, то проверка по первому(1) столбцу If lngRowEnd < 2 Then lngRowEnd = .Columns(1).Rows(1048576).End(xlUp).row If lngRowEnd > 2 Then 'если менее 2х, то пропуск
'сортировка по столбцам. Сначала второй, потом первый Сортировка = FnSortSheet(oSh, 1, "", 2, lngCln2, xlAscending) Сортировка = FnSortSheet(oSh, 1, "", 2, lngCln1, xlAscending)
aVal1 = Range(.Cells(2, lngCln1), .Cells(lngRowEnd, lngCln1)).Value aVal2 = Range(.Cells(2, lngCln2), .Cells(lngRowEnd, lngCln2)).Value ' For i = LBound(aVal1) To UBound(aVal1) If FnCheck_Val1_Val2 = 0 Then 'если значение еще не найдено vValTemp1 = UCase(aVal1(i, 1)) vValTemp2 = UCase(aVal2(i, 1)) If i = 49 Then Stop If vValTemp1 = vVal1 Then If vValTemp2 = vVal2 Then FnCheck_Val1_Val2 = i + 1 End If End If End If Next i End If End With End Function '====================================================================================== |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|