具有 HLookup 函数的 VBA 代码失败

问题描述 投票:0回答:0

我下面的脚本在代码末尾包含一个 VBA HLookup 函数。目前的方式提供了不正确的结果。我的目标是在表 (occData) 中找到最大的数字,然后在顶行中找到与表中找到的最大数字相关的值。

事实上,当前状态下的 HLookup 函数得出第一行最后一个单元格(ResultVector)中包含的值。

我还使用了相应的 Excel 函数来双重检查 VBA [“=HLOOKUP(AV2;K1:AS2;1)”]。此方法生成与 VBA 代码相同的错误结果。

想不通我哪里做错了

(代码的无关部分已被清除)

Sub freq()

Worksheets("feldolg").Activate
Dim tart As Range
    Set tart = Range("B2:H1222")
Dim Figs As Range             ' like figures
    Set Figs = Cells(1, 11)   
Dim cFreq As Range
    Set cFreq = Cells(2, 11)     
Dim cDev As Range              
    Set cDev = Cells(3, 11)
'Dim nums As Byte                  
     nums = 10                   'InputBox("blabla", "x")
Dim occData As Range
    Set occData = cFreq.Resize(1, nums)     ' occurrencies 
    'MsgBox "számgyakoriság tartomany:  " & occData.Address
     
Dim MaxOccur As Long
    MaxOccur = cFreq.Offset(0, nums + 2).Value     '
Dim MinOccur As Long
    MinOccur = cFreq.Offset(0, nums + 3).Value
Dim LookupCellMax As Range                                  
    Set LookupCellMax = cFreq.Offset(0, nums + 2)
 '   MsgBox "LookupCellMax= " & LookupCellMax.Address & vbCrLf & LookupCellMax.Value
Dim LookupCellMin As Range
    Set LookupCellMin = cFreq.Offset(0, nums + 3)
  '  MsgBox "LookupCellMin= " & LookupCellMin.Address
Dim LookupVector As Range                                                   ' 
    Set LookupVector = Range(Cells(1, 11), Cells(1, 11).Offset(1, nums - 1))
    ' MsgBox "LookupVector:  " & LookupVector.Address
Dim ResultVector As Range
    Set ResultVector = Figs.Resize(1, nums)
       ' MsgBox ResultVector.Address
    
    Application.ScreenUpdating = False
    For szam = 1 To nums
        cFreq.Offset(0, szam - 1) = WorksheetFunction.CountIf(tart, szam)
                            
    Next szam

cFreq.Offset(0, nums + 1) = WorksheetFunction.Average(occData)    
cFreq.Offset(0, nums + 2) = WorksheetFunction.Max(occData)      
cFreq.Offset(0, nums + 3) = WorksheetFunction.Min(occData)      
 
   ' THE PROBLEMATIC SCRIPT STARTS HERE :

cFreq.Offset(2, nums + 6).Value = WorksheetFunction.HLookup(LookupCellMax.Value, LookupVector, ResultVector)       
     
Application.ScreenUpdating = True
End Sub

excel vba excel-formula lookup-tables
© www.soinside.com 2019 - 2024. All rights reserved.