【问题标题】:Excel vba: Getting range from a column with empty rowsExcel vba:从具有空行的列中获取范围
【发布时间】:2016-01-15 03:13:34
【问题描述】:


我有一列,我想根据另一列中的值从(带有空单元格)中提取信息。
这个question 帮了我很多,但我现在有一列有多个空单元格,公式不起作用......

代码

Private Sub techCombo_Change()

Dim ws As Worksheet
Dim rFound As Range

Dim cCmbBox As MSForms.ComboBox
Set cCmbBox = ActiveWorkbook.Sheets(1).custCombo
cCmbBox.Clear

With Me.cmbSheet
    If .ListIndex = -1 Then Exit Sub
    Set ws = ActiveWorkbook.Sheets(.Text)
End With

With Me.techCombo
    If .ListIndex = -1 Then Exit Sub
    Set rFound = ws.Columns("A").Find(.Text, ws.Cells(ws.Rows.Count, "A"), xlValues, xlWhole)
End With

If Not rFound Is Nothing Then
    If Trim(Len(rFound.Offset(2, 1).Text)) = 0 Then
        cCmbBox.AddItem rFound.Offset(1, 1).Value
    Else
        cCmbBox.List = ws.Range(rFound.Offset(1, 1), rFound.Offset(1, 1).End(xlDown)).Value
    End If
End If

End Sub

显示示例的图像:
所以选择 VoLTE 应该会流行一个带有 K1、K3、I7、U6 ​​的组合框

【问题讨论】:

  • 根据您发布的数据,预期的结果是什么?
  • 组合框未填充,因为 Set rFound 为空,或者在调试时 rFound 为“Nothing”。预期的结果应该是一个填充了 Kund1-4 的 ComboBox
  • 值所在的行重要吗?例如,是否需要知道 Kund1 位于第 8 行?如果没有,您可以添加一段代码来选择整个列并删除所有重复项,这将删除列中包含有效条目的部分中的大量空单元格。
  • 如果 rFound 什么都不是,那么它没有在工作表的 A 列中找到值。您能否确认 Me.techCombo.Text 是您期望的值并且它存在于您的工作表中(没有前导或尾随空格、隐藏的不可打印字符等)?
  • @Brad 您必须查看他的链接问题以了解数据的布局方式。它比这稍微复杂一些。

标签: vba excel


【解决方案1】:

尝试替换这个:

If Not rFound Is Nothing Then
    If Trim(Len(rFound.Offset(2, 1).Text)) = 0 Then
        cCmbBox.AddItem rFound.Offset(1, 1).Value
    Else
        cCmbBox.List = ws.Range(rFound.Offset(1, 1), rFound.Offset(1, 1).End(xlDown)).Value
    End If
End If

用这个:

If Not rfound Is Nothing Then
 LastRow = Ws.Cells(Ws.Rows.Count, rfound.Column + 1).End(xlUp).Row
 j = rfound.Row
 i = 1

 Do While j <= LastRow And rfound.Offset(i) = ""
  If rfound.Offset(i, 1) <> "" Then
   cCmbBox.AddItem rfound.Offset(i, 1)
  End If
  i = i + 1
  j = j + 1
 Loop
End If

【讨论】:

  • 非常感谢!如果这是 C#,我会在 5 分钟内完成:D
  • @Grendizer,不客气。如果我需要在 C# 中执行此操作,也许我需要 5 年 :)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2021-12-02
相关资源
最近更新 更多