excel - 将列表中的条目复制到 Excel VBA 中的表中
问题描述
我有一个包含人员姓名、认证姓名和认证到期日期的大型列表。
我正在尝试编写一个脚本来将每个条目的认证到期日期复制到一个表中,该表在一个轴上具有人员姓名,在另一个轴上具有认证名称。
脚本需要根据证书名称和人员姓名识别表中的哪个单元格是每个条目的正确单元格,然后将证书到期日期复制到该单元格中。
我已经一步一步地写出了需要发生的事情,但是对于 VBA 来说是新手,所以很难让它发挥作用。
解决方案
您不需要宏来执行此操作。只需使用数据透视表:
如果你真的需要 VBA 代码(不是很优雅,会提交给 CodeReview 寻求改进建议):
Sub PivotData()
Dim rng As Range, cll As Range
Dim arr As New Collection, a
Dim var() As Variant
Dim l As Long
Dim lRow As Long, lCol As Long
l = 1
Set rng = Range("A2:C7")
' Create unique list of names
var = Range("A2:A7")
On Error Resume Next
For Each a In var
arr.Add a, a
Next
For l = 1 To arr.Count
Cells(l + 1, 5) = arr(l)
Next
Set arr = Nothing
' Create unique list of certificates
var = Range("B2:B7")
For Each a In var
arr.Add a, a
Next
For l = 1 To arr.Count
Cells(1, 5 + l) = arr(l)
Next
Set arr = Nothing
On Error GoTo 0
Range("F2").FormulaArray = _
"=IFERROR(INDEX(R2C3:R7C3,MATCH(1,((R2C1:R7C1=RC5)*(R2C2:R7C2=R1C)),0)),"""")"
With Range("F2")
lRow = .CurrentRegion.Rows.Count
lCol = .CurrentRegion.Columns.Count + 4
End With
Range("F2:F" & lRow).FillDown
Range(Cells(2, 6), Cells(lRow, lCol)).FillRight
End Sub
推荐阅读
- javascript - 获取 Angular Material Dialog Container 中元素的位置
- excel - 将单元格复制到新行
- python - 如果用户已经喜欢了一个帖子,Django 不允许另一个喜欢
- magento2 - 如何重新生成宽度和高度为灰色的图像?
- android - FireBaseRecyclerAdapter单击项目时如何打开Fragment并显示数据?
- mysql - Docker中的SpringBoot应用程序未连接到MySQL db
- sonarqube - SonarQube 8.5.1 - 无法启动服务 - 包装器错误
- r - ggplot2中堆叠的条形图相同类型的变量
- java - 如何在文件末尾添加数字?
- python - 根据字符串对 dict 值列表求和