MyTetra Share
Делитесь знаниями!
проверка наличия значения по 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

'======================================================================================

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования