excel - 使用 VBA 获取 2 个数组中的等效索引值
问题描述
我需要根据 A 列中的条件在 B 列上分配一个值。我使用 IF...ElseIf 条件制定了一个简单的代码(请参见下面的代码)。我有 1000 个条件,我正在考虑是否可以将 2 个单独的数组用于 A 列的值,并将 A 列中的值的索引获取到第一个数组(Array1)并将其与第二个数组(AssignedArray)匹配。例如,对于在 A 列中找到的每个值,检查 Array1 是否存在该值并获取索引并将索引与 AssignedArray 匹配。例如,
Array1 = Array("DL2005", "EFRUEN", "DESTDIDIER", "EOGRADY3", "EKARLSON1", "EOKUTOMI1")
AssignedArray = Array("Trader", "Trader", "Operations", "Trader", "Analyst", "Operations")
代码
For x = 1 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For Each wrd In Sheets(1).Cells(x, 1)
val = wrd
If UCase(val) = "DL2005" Then
Sheets(1).Cells(x, 3).Value = "Trader"
ElseIf UCase(val) = "EFRUEN" Then
Sheets(1).Cells(x, 3).Value = "Trader"
ElseIf UCase(val) = "DESTDIDIER" Then
Sheets(1).Cells(x, 3).Value = "Operations"
ElseIf UCase(val) = "EOGRADY3" Then
Sheets(1).Cells(x, 3).Value = "Trader"
ElseIf UCase(val) = "EKARLSON1" Then
Sheets(1).Cells(x, 3).Value = "Analyst"
ElseIf UCase(val) = "EOKUTOMI1" Then
Sheets(1).Cells(x, 3).Value = "Operations"
End If
Next wrd
Next x
有可能这样做吗?或者有什么方法可以简化我的代码而不是使用 IF ELSEIF 条件。
解决方案
保持简单;使用For
循环比较Array1
每个单元格column A
,如果有匹配项,使用Offset
将相应的元素AssignedArray
放入右侧的单元格中。
Dim Array1 As Variant, AssignedArray As Variant
Dim x As Long, i As Long
Array1 = Array("DL2005", "EFRUEN", "DESTDIDIER", "EOGRADY3", "EKARLSON1", "EOKUTOMI1")
AssignedArray = Array("Trader", "Trader", "Operations", "Trader", "Analyst", "Operations")
For x = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For i = LBound(Array1) To UBound(Array1)
If Cells(x, 1).Value = Array1(i) Then
Cells(x, 1).Offset(, 1).Value = AssignedArray(i)
End If
Next i
Next x
推荐阅读
- javascript - gsap中的动画进度条
- python-3.x - Python字典获取多个键
- java - 有没有办法找到一个在折射到另一个包后消失的类?
- java - 使用正则表达式在java中用另一个字符串替换字符串
- pyspark - 从数组pyspark中删除特殊字符
- vue.js - 无法弄清楚如何在表格行 (tr) 上进行 v-for 并呈现具有多列 (td) 的子组件
- mongodb - Mongoose 子文档数组更新
- sql - 使用“使用”时删除限定符错误
- javascript - 将其值更改为最小值或最大值的输入
- javascript - Firefox 在第二次和连续单击滚动到顶部按钮时忽略平滑滚动