arrays - 如何根据一个标准从数组(2列)中创建一个值列表?
问题描述
我有以下数组:
ID Chat nr
#N/A
126551829 33
126554922 33
126555078 33
126555079 33
126555261 33
126555278 33
126553808 34
126553820 34
126554425 35
126555786 36
126555925 36
126555944 36
126556297 37
126556298 37
126556299 37
126556300 37
126556307 37
126556320 37
126556322 37
126556323 37
126556323 37
126556323 37
126556323 37
126556325 37
126556332 37
#N/A
#N/A
#N/A
etc...
此数据可在名为“导入”的工作表中找到。在名为“仪表板”的工作表中,我有下拉列表,工作表的用户可以在其中选择聊天 nr。例如,如果用户选择 36,我想要此宏的以下输出(ID):
126555786
126555925
126555944
我试图编写代码,但我的代码返回数组中的所有值,而不仅仅是带有“36”的值。此外,我在“导入”表中的聊天号码列中有公式。
Private Sub CommandButton2_Click()
Dim xRng As Range
Dim xLastRow As Long
Dim xLastRow2 As Long
Dim i As Integer
On Error Resume Next
Set xRng = Worksheets("Import").Range(Range("B18"))
If xRng(, 2).Value = Worksheets("Dashboard").Range("B9").Value Then
xRng.Copy Range("F6")
xLastRow = xRng.Rows.Count + 1
ActiveSheet.Range("F6:F" & xLastRow).RemoveDuplicates Columns:=1, Header:=xlNo
End If
End Sub
代码中的单元格说明:
- B18 包含数组的名称。我需要间接地做到这一点。
- B9 包含我要显示的聊天号码(在此示例中为 36)
- F6 是输出范围中的第一个输出单元格。我希望这个范围是动态的。
我花了很多时间试图弄清楚这一点,但没有任何运气......我是 VBA 编码的新手,但我渴望学习。我当然会赞扬好的答案!
解决方案
您可以尝试此代码(现在它将首先删除以前运行的输出):
Private Sub CommandButton2_Click()
Dim xRng As Range
Dim oRng As Range ' Output range
Dim iWS As Worksheet, dWS As Worksheet
Dim ChatNr As Long
Dim i As Integer, j As Integer
Dim LastRow As Long
Set iWS = ThisWorkbook.Sheets("Import")
Set dWS = ThisWorkbook.Sheets("Dashboard")
ChatNr = dWS.Cells(9, 2) ' cell B9
Set xRng = iWS.Range(dWS.Cells(18, 2).Value) ' cell B18, assuming the array name is defined in the scope of the iWS
Set oRng = dWS.Cells(6, 6) ' output in cell F6
LastRow = dWS.Cells(dWS.Rows.Count, 6).End(xlUp).Row
' clear previous output:
If LastRow >= 6 Then
Range(dWS.Cells(6, 6), dWS.Cells(LastRow, 6)).ClearContents
End If
j = 0
For i = 1 To xRng.Rows.Count
If IsError(xRng(i, 2)) = False Then ' added check for error
If xRng(i, 2).Value = ChatNr Then
oRng.Offset(j).Value = xRng(i, 1).Value
j = j + 1
End If
End If
Next i
End Sub
推荐阅读
- java - 使用泛型破坏类型安全
- c# - 在所有地方更改 DateTime.now 的最佳方法
- python - 如何使用 antiword 读取 .doc 文件的缓冲区字符串?
- javascript - Paypal Express Checkout.js - 填充产品详细信息
- python - 带有嵌套布尔数组的logical_and
- mysql - Google Data Studio - MySQL 连接器错误的 Cloud SQL
- matrix - Xilinx Vivado_HLS 提供的线性代数库中的 QRF_ALT 函数中使用的算法是什么?
- mysql - 对一组医疗保健数据创建 4 个 SQL 查询,称为四切方法
- symfony - 访问 flashbag 表单 AbstractFormLoginAuthenticator
- python - 提取电子邮件和电话号码