excel - 如何避免第一个逗号和框出希望的范围
问题描述
在 VBA 中进行大量尝试后,我可以将正确的数据分配给我想要的范围(D1:E6)。现在,我不知道如何避免第一个逗号(1.问题)以及为什么突然整张纸被框起来而不是标记的范围(2.问题)。我以为我向系统发出命令“将 Range rng2 设置为 E:E,UP 设置为之前过滤数据的范围”-不幸的是,我根本没有这样做,而且对我来说确实很清楚。我只是命令将 rng2 设置为 E:E 直到最后,但我不知道如何在两者之间建立桥梁。
Set rng2 = ActiveSheet.Range("E:E", ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp))
A:B 不是一个固定的数据框,因此它会根据我下载到 Excel 中的数据而改变,因此我不能只命令从 D1:E6 放置一个框,它必须根据 A:B 的输入数据灵活。但这不应该是问题(?),因为 for 循环。
我要做的就是将 rng2 与 Loop 结合起来,对吗?
你有什么方法可以建议我吗?非常感谢。
我的代码
Sub Duplicate()
Dim nA As Long, nD As Long, i As Long, rc As Long
Dim s As String, j As Long
Range("A:A").Copy Range("D1")
Range("B1").Copy Range("E1")
Range("D:D").RemoveDuplicates Columns:=1, Header:=xlYes
rc = Rows.Count
nA = Cells(rc, 2).End(xlUp).Row
nD = Cells(rc, 4).End(xlUp).Row
For i = 2 To nD
v = Cells(i, 4)
v2 = ""
For j = 2 To nA
If v = Cells(j, 1) Then
v2 = v2 & "," & Cells(j, 2)
End If
Next j
Cells(i, 5) = Mid(v2, 1)
Next i
'neu
Dim rng2 As Range:
Set rng2 = ActiveSheet.Range("E:E", ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp))
rng2.HorizontalAlignment = xlLeft
With rng2.Borders()
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
解决方案
为避免第一个逗号,如果您不介意末尾的逗号,您可以将连接更改为:
If v = Cells(j, 1) Then
v2 = v2 & Cells(j, 2) & ","
End If
或为首次进入添加额外条件
For i = 2 To nD
v = Cells(i, 4)
v2 = ""
For j = 2 To nA
If v = Cells(j, 1) Then
If v2 = "" Then
v2 = Cells(j, 2)
Else
v2 = v2 & "," & Cells(j, 2)
End If
End If
Next j
With Cells(i, 5)
.NumberFormat = "@"
.Value = Mid(v2, 1)
End With
Next i
推荐阅读
- python - Python - PySpark 的 Pickle Spacy
- r - 如何为时间序列制作分组范围图?
- chef-infra - 与自动化服务器不同步的节点的刀视图
- sql - Postgres 中的多级表聚合
- python-3.x - 将熊猫数据框转换为列表字典
- javascript - 包括不检查 Javascript 中的数组输入的方法
- amazon-web-services - 配置中缺少凭据:Cognito(用于未经身份验证的)和 S3
- c# - 安装并允许使用全局命令行的 C# 应用程序
- wordpress - 在 Wordpress 的任何页面上显示特定父母的子帖子
- javascript - 如何从源面板在控制台中显示变量?