arrays - 从数组 VBA 创建范围值
问题描述
我是 VBA 的新手。有人可以在这里帮助我吗
我有两个数组
Pages=(1,2,3,4,5,6,7,8,9,10)
Exclusion=(1,1,3,3,7)
我想编写一段代码来比较数组并给我一个像这样的输出
(1,2,3,4-6,7,8-10)
在迭代 Pages 数组时,如果 Exclusion 数组上有可用的值,我想在结果数组中保留单个元素,否则应将值分组
解决方案
这需要一点精度,我希望我做对了。这是我构造的函数。它没有将 4 放在一个单独的组中,因为它没有列在排除项中,但它肯定需要比我做的更多的测试。做我的客人哈哈:
Function Pagelist(Pages As Variant, _
Exclusions As Variant) As String
' 015
Dim Fun() As String
Dim n As Long
Dim Excl As String
Dim Sp() As String
Dim i As Long
ReDim Fun(LBound(Pages) + UBound(Pages))
Excl = "," & Join(Exclusions, ",") & ","
For i = LBound(Pages) To UBound(Pages)
If InStr(Excl, "," & Pages(i) & ",") Then
If Len(Fun(n)) Then n = n + 1
Fun(n) = Pages(i)
n = n + 1
Else
If Len(Fun(n)) Then
Sp = Split(Fun(n), "-")
If UBound(Sp) = 0 Then ReDim Preserve Sp(1)
Sp(1) = Pages(i)
Fun(n) = Join(Sp, "-")
Else
Fun(n) = Pages(i)
End If
End If
Next i
If n Then ReDim Preserve Fun(n)
Pagelist = Join(Fun, ",")
End Function
出于测试目的,您可以使用如下过程调用该函数。
Private Sub Test()
Dim Pages As Variant
Dim Exclusions As Variant
Pages = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Exclusions = Array(1, 1, 3, 3, 7)
Debug.Print Pagelist(Pages, Exclusions)
End Sub
推荐阅读
- android - 清洁架构:领域层是否应该在特定操作后控制是否添加到数据库?
- ionic-framework - Ionic 3 相机插件在 iPhone 上因 saveToPhotoAlbum true 而崩溃
- python - 基于那里的列值 pandas 聚合行
- php - 带有 ODBC 驱动程序的 MS Access 数据库 IBM i Access Client
- kotlin - Kotlin 暂停功能是否在单独的线程上运行?
- jenkins - 无法在 https 上启动 Jenkins
- windows - 列出设备管理器中显示的所有设备的所有驱动程序
- spring-batch - 将 Spring 作业提交到相同的 Spring 上下文
- beagleboneblack - 未找到 Beaglebone 补丁路径中的 musb 气泡中断错误
- android - FCM 17.3.4 推送通知图标未显示