我下面的脚本在代码末尾包含一个 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