簡體   English   中英

VBA VLookup找不到成功的比賽

[英]VBA VLookup isn't finding a successful match

我正在將2個CSV輸入文件加載到新的工作簿中,然后使用MDAAccountList中的值使用application.Vlookup在AssetAllocExt中搜索一條記錄。 代碼運行並執行Vlookup部分后,將返回錯誤2042,並且找不到匹配項。 當我編寫與常規公式相同的Vlookup值時,它將找到成功的匹配項並返回值。 我以前使用過相同的代碼,沒有任何問題,所以不確定是否是數據格式問題。 我在下面提供了數據示例。

MDAAccountList

AccountNumber
334324
364438
494757
496819
444165
444608
558425
450246
517853

AssetAllocExt

AccountNumber   Australian Equities Australian Equities %   Global Equities Global Equities %
334324  290980.26   0.3703  115411.3    0.1469

364438  121314.12   0.2496  50278.12    0.1034

494757  345521.5    0.294   226973.46   0.1931


Public Sub LoadMDAAccountList()

Dim WB As Workbook
Dim SourceWB As Workbook
Dim WS As Worksheet
Dim ASheet As Worksheet
Dim LastRow As Long

'Turns off screenupdating and events:
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual

'Sets the variables:
Set WB = ActiveWorkbook
Set ASheet = ActiveSheet
Set SourceWB = Workbooks.Open("C:\test\MDAAccountList.csv", local:=True)

'Copies each sheet of the SourceWB to the end of original wb:
For Each WS In SourceWB.Worksheets
    WS.Copy after:=WB.Sheets(WB.Sheets.Count)
Next WS

SourceWB.Close SaveChanges:=False
Set WS = Nothing
Set SourceWB = Nothing

WB.Activate
ASheet.Select
    Set ASheet = Nothing
    Set WB = Nothing

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

'-------------

Public Sub LoadAssetAllocationExtract()

Dim WB As Workbook
Dim SourceWB As Workbook
Dim WS As Worksheet
Dim ASheet As Worksheet
Dim LastRow As Long

'Turns off screenupdating and events:
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual

'Sets the variables:
Set WB = ActiveWorkbook
Set ASheet = ActiveSheet
Set SourceWB = Workbooks.Open("C:\test\AssetAllocationExtract.csv", local:=True)

'Copies each sheet of the SourceWB to the end of original wb:
For Each WS In SourceWB.Worksheets
    WS.Copy after:=WB.Sheets(WB.Sheets.Count)
Next WS

SourceWB.Close SaveChanges:=False
    Set WS = Nothing
    Set SourceWB = Nothing

WB.Activate
ASheet.Select
    Set ASheet = Nothing
    Set WB = Nothing

Application.DisplayAlerts = False

Sheets("AssetAllocationExtract").Activate
ActiveSheet.Name = "AssetAllocExt"

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

'-------------

Public Sub CheckAssetAllocation()

Dim PortfolioAustEq As String
Dim PortfolioGlobEq As String
Dim PortfolioAustEqFound As Variant
Dim PortfolioGlobEqFound As Variant

Dim UniqueReference As String
Dim SelectedPortfolio As String

Dim Lookup_Range As Range

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual

Sheets("MDAAccountList").Activate
Range("A2").Activate
Range("A2").Select

Do
  SelectedPortfolio = ActiveCell.Value

  Set Lookup_Range = Range("AssetAllocExt!A:O")

  UniqueReferenceFound = Application.VLookup(SelectedPortfolio, Lookup_Range, 1, 0)
  PortfolioAustEqFound = Application.VLookup(SelectedPortfolio, Lookup_Range, 3, 0)
  PortfolioGlobEqFound = Application.VLookup(SelectedPortfolio, Lookup_Range, 5, 0)

Loop Until IsEmpty(ActiveCell.Value)

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

您可以在此處找到有關您所遇到問題的更詳細說明,但長短短,建議您進行@CLR的更改。

同時,請參見下面的

...
Dim SelectedPortfolio As Long 'or change the correct datatype
...

本質上,您試圖在代碼中執行的操作是這樣的:

=VLOOKUP(TEXT(SelectedPortfolio, "0"), Lookup_Range, 1, 0)

這在電子表格中也不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM