【问题标题】:vb output match excel columnsvb输出匹配excel列
【发布时间】:2013-10-03 21:02:58
【问题描述】:

我目前正在使用 Microsoft Visual Basic 2010 *(VBA)* 和 Microsoft Excel 2010,为用户创建一个界面选择他们的位置,然后选择他们希望获得信息的设备,以换取设备信息(使用情况等)的输出。我一直在寻找的问题还没有答案,让我继续寻找所需的 VB 代码。我有一个输入框,要求用户输入他们的设备(这是一个字符串),想法是这样的:

If chkCapacity.Checked = True Then
            lblOutput.Text = "This is the Capacity for " & cmbLocation.SelectedItem & " " & strdevice
            lstResults.Items.Add(cmbLocation.SelectedItem)
            lstResults.Items.Add("Device_Capacity")
End If

我希望能够调用我在 Excel 中的匹配信息,用于位置、设备,然后是他们想要的最终结果。已经有用于位置、设备和容量的 Excel 列。我希望我说清楚了。 (将所选设备和所选位置与excel值匹配,返回所需的设备信息)显然我不能这样做:

Dim Sheet_Device_Capacity As String

    Sheet_Device_Capacity = exSheet.Range("s2:s75").Value.ToString

因为我试图匹配设备和位置列,而不仅仅是容量列。

我的电子表格如下所示:

PoP 设备 1 容量

  • 罗切斯特 - 不在位置 - 42%

  • 锡拉丘兹 - 地点 - 33%

  • 宾厄姆顿 - 位置 - 45%

  • 奥尔巴尼 - 不在位置 - 50%

    (希望您理解格式,因为我无法添加图像)

【问题讨论】:

  • 你能看看你的电子表格是什么样子的吗?
  • 是的,谢谢,见上文。

标签: excel vba


【解决方案1】:

一个相当简单的循环遍历您的信息以查找匹配项就足够了。例如,

Dim mylocation
Dim mydevice
Dim myinfo
Dim index As Long
Dim lastrow As Long

lastrow = Cells(Rows.Count, "A").End(xlUp).Row

'assuming location in column A,
'device in column B,
'info in column C

With ActiveSheet
  For index = 2 To lastrow
    If .Cells(index, 1).Value = mylocation And _
    .Cells(index, 2).Value = mydevice Then
    myinfo = .Cells(a, 3)
  Next index
End With

这会查找匹配项,并返回 C 列的值。

【讨论】:

  • 所以这将返回 c 列的值,与我的字符串值的其他两列相关?如果是这样,这是一个非常简单的方法:)
  • 是的,如果找到 col A = mylocation 和 col B = mydevice 的行,它会将 myinfo 设置为 col C 中的任何内容。有几种方法可以在工作表中搜索信息,这是只是我能输入的最快的,也许是最容易理解的!
  • 我唯一的问题是,容量在基于设备的 excel 中的不同列中。 (d 列中的一个设备,g 中的容量,l 中的另一个设备等)我是否仍然可以使用此搜索并将多个列添加到 myinfo 结果?
  • 我认为如果您有多个列,您将需要:(1) 使用新值执行循环,一旦第一个循环完成,或者 (2) 更改使用 Range 的方法。查找或类似的东西。有关更多想法,请参阅here
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多