尝试通过VLookup将单元格从一张纸复制到另一张纸

时间:2019-03-27 21:00:22

标签: excel vba

我有一个包含工作表1和工作表2的电子表格。工作表2的数据是使用宏从Access数据库中提取的。有一个帐号(例如:12345)和一个与该号码相对应的帐号(例如:帐号A)。

在工作表1上,我使用VLookup在“帐户名称”字段中查看A列中的帐户编号,使用该值在工作表2上查找帐户编号,然后从工作表2中提取相应的帐户名称。

我收到#N / A错误。我认为问题与以下事实有关:工作表2中的帐号已作为“文本编号”输入。但是,工作表1上的帐户是文本。

我尝试将工作表2上的帐户也更改为文本帐户,但仍然无法使用。我还尝试编写一个宏来格式化工作表1到工作表2的格式,以便使帐户在字面上匹配。

如果我双击工作表2上的帐号并按Enter键,它将把该帐户名拖到工作表1中。因此,我尝试编写一个宏来将帐户值设置为与自身相等,因为我必须对此进行一些设置其他字段,但这也不起作用。

有人以前有过类似的问题吗?如何获取vlookup来识别Sheet 2上的帐户?

这是我在工作表1上使用的vlookup: = IFERROR(VLOOKUP(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 :(得分:0)

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),"")