excel - 如何使用二维数组作为查找填充列(VBA)
问题描述
我在电子表格中有一个包含一些值的列。我创建了一个数组,将这些值分配给一个组。我想使用从数组中查找直到最后一行来填充第二列。
目前看来:
column A
A
B
C
A
...
目标视图:
column A column B
A 1
B 2
C 3
A 1
...
这是我到目前为止所拥有的:
Dim Array as Variant
Dim lr as long
numlookup=(Array("A", 1), Array("B",2), Array("C",3))
lr = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:A" & lr).Formula = "=IF(application.match(ActiveCell.Value, numlookup,0)".cell(numlookup,1).value
谢谢!
解决方案
我建议将代码和数据分开(硬编码数据是一种非常糟糕的做法)。因此,硬编码数组中的分组是一个坏主意Arr=(Array("A", 1), Array("B",2), Array("C",3))
。相反,您可能希望将此数据保存在(可能是隐藏的)工作表中。
所以你的GroupLookup
工作表看起来像这样
column A column B
A 1
B 2
C 3
然后您可以在数据表中使用简单的VLOOKUP 函数
column A column B
A =VLOOKUP(A:A,GroupLookup!A:B,2,FALSE)
B
C
A
...
由于评论而编辑:
如果您需要使用 VBA 进行操作,仍然将您GroupLookup
的工作表放入工作表中,而不是放入代码中!例如,放入您的加载项或您将宏放入的任何位置,但如下表:
所以你的GroupLookup
工作表看起来像这样
column A column B
A 1
B 2
C 3
并使用WorksheetFunction.VLookup 方法查找该工作表中的组
Option Explicit
Sub WriteGroups()
Dim GroupLookup As Worksheet 'define workbook/sheet where the group lookup table is
Set GroupLookup = ThisWorkbook.Worksheets("GroupLookup")
With Workbooks("YourWb").ActiveSheet 'this is the sheet where the group is written to
Dim LastRow As Long
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Dim iRow As Long
For iRow = 1 To LastRow
On Error Resume Next
.Cells(iRow, "B").Value = Application.WorksheetFunction.Vlookup(.Cells(iRow, "A").Value, GroupLookup.Range("A:B"), 2, False)
If Err.Number <> 0 Then .Cells(iRow, "B").Value = CVErr(xlErrNA) 'write #NA if group not found
On Error Goto 0
Next iRow
End With
End Sub
推荐阅读
- ruby - 如何从文件中读取 IP/子网并在 Chef 防火墙配方中使用
- java - Spark-Salesforce:如何在 spark-salesforce-connector 中指定服务器地址?
- google-apps-script - 我将如何通过减少对服务器的调用来优化此移动行代码?
- java - Java 可选:flatmap 和 orElseGet
- c# - 更改 CommandField“更新”和“取消”按钮的位置?
- javascript - 如何添加从存储桶中删除对象的方法?
- azure-cognitive-search - Azure 搜索:rotationFromOriginal 未正确填充
- html - 如何使用带有线条和圆圈的引导程序创建时间线轮播
- android - Ionic:通过社交媒体分享特定页面
- loopbackjs - 当所需的数据库字段在 JSON 中时,如何从模型创建数据库模式?