【问题标题】:How do I select specific value from Excel table based on a column and row selection?如何根据列和行选择从 Excel 表中选择特定值?
【发布时间】:2017-08-08 01:37:07
【问题描述】:

我有一张如下表

我想创建一个表单,在其中从可用模型中选择或键入模型,然后根据该模型,我想使用表格中的适当 sX 值。

例如,对于模型A20,我需要值s7。它是1.5。我想在另一个公式中使用该值。我该如何解决这个价值?

理想情况下,我希望能够通过使用模型和s7 而不是绝对 Excel 单元格位置来引用该值。数据表位于单独的表格中,以防万一。

【问题讨论】:

  • 您对 vba 解决方案持开放态度吗?
  • 我会说是的。但如果有一个相当简单的仅限 Excel 的解决方案可用,我更喜欢那个
  • @Gowtham,如果你想发布一个 vba 解决方案,我会给你一个赞成票。看看我将要做的计算量,我也在考虑走 vba 路线..
  • @Dennis 我想知道您如何提供输入
  • 就我而言,唯一的输入是型号名称。用户将其输入到一个单元格中,例如B4。我还使用 Excel 的“定义名称”功能将该单元格命名为 model。然后将编写代码本身以使用诸如s7 之类的变量。因此,如果我需要 s7 并且用户选择了 A20,代码将执行类似 result = s7 + 5 的操作,其中 s7 的值取决于用户在 model 单元格中选择的模型。

标签: excel vba


【解决方案1】:

使用 INDEX()

=INDEX($1:$1048676,MATCH("S7",$A:$A,0),MATCH("A20",$1:$1,0))

您可以将"S7""A20" 的“硬编码”值替换为单元格引用,从而允许您将标题放在这些单元格中以返回正确的值。

【讨论】:

  • $1:$1048676 将返回范围设置为整页,MATCH 返回正确的行和列。在您的示例中, MATCHS 将第 8 行和第 3 列返回到完整的工作表引用,因此它返回工作表第 8 行和第 3 列的值。
  • 谢谢,我现在明白了。出于某种原因,尽管该公式返回了 s7 上方单元格的值,但在本例中为 s6... 我正在尝试解决为什么会发生这种情况。将第一个值调整为 B2:N100 似乎给了我想要的东西。但是$1:$1048676,给了我意想不到的结果。
  • mm 好吧,我想我现在明白了.. 不知道为什么它会给我带来问题...谢谢!
  • 如果你没有为 INDEX 使用完整的工作表引用,你不能在 MATCH() 中使用完整的列和行引用:=INDEX(B2:N100,MATCH("S7",A2:A100,0),MATCH("A20",B1:N1,0))
【解决方案2】:

这是接受模型和 sX 值的代码,为您提供表格的输出,

Sub searchTable()
Dim i As Long, j As Long
sx = InputBox("Enter sX value")
Model = InputBox("Enter the model")
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1) = sx Then
        Exit For
    End If
Next i
For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    If Cells(1, j) = Model Then
        Exit For
    End If
Next j
'This is the value that you need, which can be used somewhere in your program
MsgBox Cells(i, j)
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多