Попытка скопировать ячейки с одного листа на другой через VLookup - PullRequest
0 голосов
/ 28 марта 2019

У меня есть электронная таблица с Листом 1 и Листом 2. Лист 2 содержит данные, извлекаемые из базы данных Access с помощью макроса. Существует номер учетной записи (например: 12345) и имя учетной записи, соответствующее этому номеру (например: учетная запись A).

На Листе 1 я использую VLookup в поле Имя учетной записи, чтобы посмотреть номер счета в столбце А, используйте это значение для поиска номера счета на Листе 2 и извлеките соответствующее Имя учетной записи из Листа 2.

Я получаю ошибку # N / A. Я полагаю, что проблема связана с тем фактом, что номер счета в листе 2 указывается как «номер как текст». Однако учетная запись на листе 1 является текстовой.

Я попытался изменить учетную запись на Листе 2 на текстовую, но она все равно не будет работать. Я также попытался написать макрос для форматирования краски с листа 1 на лист 2, чтобы счета в буквальном смысле совпадали.

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

Кто-нибудь сталкивался с подобной проблемой раньше? Как я могу заставить vlookup распознавать учетные записи на листе 2?

Вот vlookup, который я использую на Листе 1: = IFERROR (ВПР (A15, Ledger A: B, 2, FALSE), "")

    Sub DATA_RECORDSET_OPEN()
        Application.StatusBar = "OPENING RECORDSET  -  PLEASE WAIT"
        With rstQuery
          .ActiveConnection = cn
          .Source = sqlSelect
          .LockType = adLockOptimistic
          .CursorType = adOpenStatic
          .CursorLocation = adUseServer
          .Open
        End With
      Application.StatusBar = False
     End Sub

    Sub DATA_IMPORT_RECORDS()
      'This section counts the number of rows with data in column "A" and then pastes the information from the query on the first empty row.
        Application.StatusBar = "IMPORTING NEW ROWS OF DATA  -  PLEASE WAIT"
        intRows = Application.CountA(ActiveSheet.Columns("A:A"))
        ActiveSheet.Range("A" & intRows + 1).CopyFromRecordset rstQuery
        Application.StatusBar = False
    End Sub

    'Format painter from Sheet 1 to Sheet 2
    Sheets("Sheet 1").Range("A15").Copy
        Sheets("Sheet 2").Range("A2:A500").Select
                Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False

   'Fixes Sheet 2 total formulas by correcting Sheet 2 tab cells
    intCount = Application.CountA(Sheets("Sheet 2").Range("A:A"))
        Do Until intCount = 1
            Range("A" & intCount).Select
            ActiveCell.FormulaR1C1 = Range("A" & intCount).Value
            Range("B" & intCount).Select
            ActiveCell.FormulaR1C1 = Range("B" & intCount).Value
            Range("C" & intCount).Select
            ActiveCell.FormulaR1C1 = Range("C" & intCount).Value
            Range("D" & intCount).Select
            ActiveCell.FormulaR1C1 = Range("D" & intCount).Value
            Range("E" & intCount).Select
            ActiveCell.FormulaR1C1 = Range("E" & intCount).Value
            intCount = intCount - 1
        Loop

1 Ответ

0 голосов
/ 28 марта 2019

VLOOKUP не найдет число, если ищет текст, или текст, если ищет число.

Если Excel понимает номера счетов как строковые значения в листе Ledger, преобразуйтезначение поиска в строку с использованием функции TEXT:

=IFERROR(VLOOKUP(TEXT(A15,"@"),Ledger!A:B,2,FALSE),"")

Если Excel понимает номера счетов как числовые значения на листе Ledger, преобразуйте значение поиска в число, используя VALUEфункция:

=IFERROR(VLOOKUP(VALUE(A15),Ledger!A:B,2,FALSE),"")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...