excel - 读取 A 列,根据模式插入行
问题描述
我在 A 列中有如下所示的数据:
A
B
A
B
B
B
A
B
A
B
几点:
- 所有 A 必须至少有一个 B。所有 A 都有 B,所有 B 都有 A。(这是一个会计系统 - 它需要这个)。
- 任何 A 都可以有尽可能多的 B。
- 在每个 AB[n] 组合之后,我们需要一个 C。
- C 必须是插入的行。不允许排序和过滤(A、B 和 C 是不被字母字符替换的变量,如这里所示)。
- 代码不应在第一个 A 上方插入 C。
预期输出:
A
B
C
A
B
B
B
C
A
B
C
A
B
C
我已经看过这个:Excel:每 x 行插入新行,内容根据模式 但该模式基于已知的 27 行插入。这在我的问题中没有保证的模式。
解决方案
尝试
Sub test()
Dim vDB, vR()
Dim A, B, C
Dim i As Long, r As Long, n As Long
A = "A"
B = "B"
C = "C"
vDB = Range("a1").CurrentRegion
r = UBound(vDB, 1)
n = 1
ReDim Preserve vR(1 To n)
vR(1) = vDB(1, 1)
For i = 2 To r
If vDB(i - 1, 1) = B And vDB(i, 1) = A Then
n = n + 1
ReDim Preserve vR(1 To n)
vR(n) = C
End If
n = n + 1
ReDim Preserve vR(1 To n)
vR(n) = vDB(i, 1)
Next i
If vR(n) = B Then
n = n + 1
ReDim Preserve vR(1 To n)
vR(n) = C
End If
Range("c1").CurrentRegion.Clear
Range("c1").Resize(n, 1) = WorksheetFunction.Transpose(vR)
End Sub
如果你想要多列然后
Sub test2()
Dim vDB, vR(), vS()
Dim A, B, C
Dim i As Long, r As Long, n As Long
Dim col As Integer
Dim Ws As Worksheet
A = "A"
B = "B"
C = "C"
vDB = Range("a1").CurrentRegion
r = UBound(vDB, 1)
col = UBound(vDB, 2)
n = 1
ReDim Preserve vR(1 To col, 1 To n)
For j = 1 To col
vR(j, n) = vDB(1, j)
Next j
For i = 2 To r
If vDB(i - 1, 1) = B And vDB(i, 1) = A Then
n = n + 1
ReDim Preserve vR(1 To col, 1 To n)
vR(1, n) = C
End If
n = n + 1
ReDim Preserve vR(1 To col, 1 To n)
For j = 1 To col
vR(j, n) = vDB(i, j)
Next j
Next i
If vR(1, n) = B Then
n = n + 1
ReDim Preserve vR(1 To col, 1 To n)
vR(1, n) = C
End If
Set Ws = Sheets.Add 'Sheets("Result")
With Ws
.Range("a1").CurrentRegion.Clear
.Range("a1").Resize(n, col) = WorksheetFunction.Transpose(vR)
End With
End Sub
推荐阅读
- html - 对于可访问性,网站是否可以在网站徽标上使用 H1,在文本标题上使用 H1?
- javascript - Cheerio 不完整的 Html
- api - Flash 和 dash 与安全性集成
- javascript - 使用链接的多个 jQuery 动画未按预期工作
- kotlin - 如何在数组 Kotlin 中获取特定值的大小
- python - 收到错误代码:SubscriptionNotFound 消息:尝试获取有关 Azure 虚拟机的数据时未找到订阅?
- c# - 进行 api 调用时出现 Google.Cloud.AutoML.V1 错误
- spring - 未加载静态资源
- java - 如何修复 NoClassDefFoundError?
- swagger - Jhipster 中不生成 Swagger UI