VBA - 获取与范围内最大值关联的字符串

标签 vba excel worksheet-function

我正在用 excel 编写宏,需要获取与某个范围内的最大值关联的字符串或文本。

我的范围看起来像这样:

一个 |乙
CR1 | 2.33
CR2 | 5.1
CR3 | 10.0
CR4 | 3.8

我能够在 B 列中找到 MAX 值,但现在我需要 A 列中的关联字符串。所以在这种情况下,鉴于 B3 (10.0) 是最大值,我想拉出“CR3”。

所以我拉最大值的代码是:

 Set myRange = Application.InputBox( _
 prompt:="Please select the Range.", Title:="Graph Range", Type:=8)
 highestNum = Application.WorksheetFunction.Max(myRange)

我该怎么做才能在 A 列中获取关联的字符串?
我试过使用.Address,但这并没有让我到任何地方。

提前致谢!

!!!!!!编辑/更新 - 已解决:!!!!!!!

正如另一位贡献者所建议的,我需要使用 inded + Match。解决方案见下文。
Set myRange = Application.InputBox( _
prompt:="Please select the Primary KPI 'Lift' Data to Graph.", Title:="Graph Range", Type:=8)

Set rngColumn2 = myRange.Areas(2)

highestNum = Application.WorksheetFunction.Max(myRange)

test = Application.WorksheetFunction.Index(myRange, Application.WorksheetFunction.Match(highestNum, rngColumn2, 1), 1)

最佳答案

您可以使用 Range.Find() 返回找到最大值的单元格。

然后使用 offset 将值从单元格直接返回到左侧:

 Dim mtch As Range
 Set myrange = Application.InputBox( _
 prompt:="Please select the Range.", Title:="Graph Range", Type:=8)
 highestNum = Application.WorksheetFunction.Max(myrange)
 Set mtch = myrange.Find(highestNum)
 Debug.Print mtch.Offset(, -1).Value

编辑

您似乎遇到了舍入/浮点小数问题。为了帮助解决这个问题,我们需要更改为 For Each 循环并将每个值加载到另一个 double 中,以便舍入相同:
Dim mtch As Range
Dim highestNum As Double
Dim t As Double
Dim myrange As Range
 Set myrange = Application.InputBox( _
 prompt:="Please select the Range.", Title:="Graph Range", Type:=8)
 highestNum = Application.WorksheetFunction.Max(myrange)
 t = Range("B3").Value
 r = t = highestNum
 For Each mtch In myrange
    t = mtch.Value
    If t = highestNum Then
        Debug.Print mtch.Offset(, -1).Value
        Exit For
    End If
Next mtch

关于VBA - 获取与范围内最大值关联的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40266840/

相关文章:

vba - 拆分字符串 - 基于符号的 Vba

excel - 在 Power Query 中组合列,无需拆分为多个查询并附加

java - 使用 Java 从 CSV 文件中过滤掉数字

excel - 我想比较 Excel 中不同工作表中的两个列表以查找任何重复项

excel - Excel 的 WORKDAY 函数在 MATLAB 中的等价物是什么?

excel - 如何设置抄送收件人?

vba - 计算不同 Excel 工作表中的行数

sql-server - 将 Access 报告另存为 PDF/二进制文件

vba - 提取具有相同名称的列并复制到不同的工作表中

vba - 使用 Excel VBA 按列值对工作表数据进行排序