VBA - IsNumber не возвращает ничего из-за префикса - PullRequest
0 голосов
/ 23 мая 2018

Контрольный вопрос от:

VBA - поиск соответствия с несколькими параметрами

Приведенный ниже код работает хорошо, но с тех пор я понял, что значения в столбце Aиногда содержит префикс, который поэтому ничего не возвращает.

Надеясь, что кто-то может отредактировать фактическую формулу, чтобы учесть двухбуквенный префикс перед числом.

Код:

Sub PlaceFormula()
Dim ws As Worksheet
Dim lr As Long
Dim lc As Long

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
End With

Set ws = Sheets("Main")
lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
lc = ws.Cells(1, Columns.Count).End(xlToLeft).Column

ws.Range("B2", ws.Cells(lr, lc)).Formula = "=IF(ISNUMBER(MATCH($A2&B$1,INDEX(tStatus[[Employee Number]:[Employee Number]]&tStatus[[Wk Number]:[Wk Number]],),0)),""Match"","""")"
ws.Range("B2", ws.Cells(lr, lc)).Value = ws.Range("B2", ws.Cells(lr, lc)).Value

With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub

Образец данных в столбце A:

12345

24681

78956

AB12345

A78956

Данные в таблице также будут содержать префикс, ЕСЛИ значение есть. Таким образом, по сути, MATCH ищет точное совпадение.

Ссылка наПример файла:

https://drive.google.com/file/d/1Uoa0Yn72nSckQaBnl6Y-a2q6UMJX6H3f/view?usp=sharing

1 Ответ

0 голосов
/ 23 мая 2018

эта формула сообщает вам, есть ли 2,1 или 0 нечисловых префиксов.Вы можете использовать число, полученное по этой формуле, чтобы обрезать префиксы числа и затем провести ваш матч.

Формула 1:

=IF(ISNUMBER(NUMBERVALUE(LEFT(B2,1))),0,IF(ISNUMBER(NUMBERVALUE(RIGHT(LEFT(B2,2),1))),1,2))

Если первый символ слева отстрока является числом, возвращает 0, если не проверяется, является ли первый символ справа от строки, образованной при взятии первых двух символов слева от строки, числом, если это тоже число, то возвращается 2, иначе 1

Формула 2:

=RIGHT(B2,LEN(B2)-C2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...