from Cases where CaseNo in (Select mid(lngCaseNo&',',first(CaseNo),Last(CaseNo)-first(CaseNo)) from Cases where CaseNo<=len(lngCaseNo)+1 Group by instr(CaseNo,lngCaseNo&',',','))
新建一个辅助表 Cases,字段CaseNo,长整型,输入从1-10000,此辅助表的用处很大。
再建一个要行变列表Test,字段T2,T1,输入
t2 t1
a 11,10,14
b 50,73,386
c 1023,1325,2986
新建查询
SELECT t2,t1,instr(CaseNo+1,t1 & ',',',') AS lngMid, mid(t1,CaseNo,lngmid-caseNo) as RowToColumn
FROM Cases, Test
WHERE instr(CaseNo+1,t1 & ',',',',)<>0 and caseno<=len(t1)+2 And mid(',' & t1 & ',',caseno,1)=','
order by t2
这个代码可能理解起来比较简单,我用了10年才想到的,虽然用VBA可以很简单的实现,但是用SQL直接解决实际问题,可能会获得更大的乐趣