数据源
P → D → TYPE
25 → 150 → RF-RF
25 → 100 → RF-BLRF
25 → 65 → RF-RF
数据处理结果P → D → TYPE → RF数量 → BLRF数量
25 → 150 → RF → 2 →
25 → 100 → RF → 1 → 1
25 → 65 → RF → 3 → 1
25 → 100 → BLRF → → 1因为CSDN不能贴图,请见http://club.excelhome.net/viewthread.php?tid=637584&extra=&frombbs=1
P → D → TYPE
25 → 150 → RF-RF
25 → 100 → RF-BLRF
25 → 65 → RF-RF
数据处理结果P → D → TYPE → RF数量 → BLRF数量
25 → 150 → RF → 2 →
25 → 100 → RF → 1 → 1
25 → 65 → RF → 3 → 1
25 → 100 → BLRF → → 1因为CSDN不能贴图,请见http://club.excelhome.net/viewthread.php?tid=637584&extra=&frombbs=1
P │ D │ TYPE
25 │ 150 │ RF-RF
25 │ 100 │ RF-BLRF
25 │ 65 │ RF-RF
数据分离规则P │ D │ TYPE RF数量1 │ RF数量2 │ BLRF数量
25 │ 150 │ RF-RF 1 │ 1 │
25 │ 100 │ RF-BLRF 1 │ │ 1
25 │ 65 │ RF-RF 1 │ 1 │
25 │ 65 │ RF-BLRF 1 │ │ 1
分离结果
P │ D │ TYPE RF数量 BLRF数量
25 │ 150 │ RF │ 2 │
25 │ 100 │ RF │ 1 │ 1
25 │ 65 │ RF │ 3 │ 1
25 │ 100 │ BLRF │ │ 1
25 │ 65 BLRF 1CSDN不能贴图,也不能上传仰附件。不知道能否表述清楚。
25 150 RF-RF
25 100 RF-BLRF
现在解决方法是用SELECT方法。
Sub lsfd()
Dim Rst As ADODB.Recordset, Sql As String
Sql = "Select P,D,left(Type,2),mid(type,4,10) From [sheet3$]"
Set Rst = ConnectRst(Sql)
With Rst
.MoveFirst
For ii = 0 To .RecordCount - 1
Debug.Print ii;
For jj = 0 To .Fields.Count - 1
Debug.Print .Fields(jj) & ", ";
Next jj
Debug.Print
.MoveNext
Next ii
End With
End Sub得出结果
0 25, 150, RF, RF,
1 25, 100, RF, BLRF
---------------------------
此结果不是目标需求,实际需求有以下几种组合
P D TYPE
25 100 BLRF-RF
25 100 M-FM
25 100 FM-M
25 100 T-G用left是固定格式的字符串分离,不能实现目标需求。
SQL能够解决动态格式的字符串分离吗?谢谢。