Office中国论坛/Access中国论坛

标题: 小妖同学请进!!! [打印本页]

作者: Javert    时间: 2011-12-12 08:30
标题: 小妖同学请进!!!
请教下表1如何转到2的
[attach]47619[/attach]

作者: roych    时间: 2011-12-13 18:24
看样子,被点名的小妖同学缺席了?{:soso_e128:}。
俺用ADO随便做了一个。实际上,用内存数组会更好些,只是写起来也更加麻烦,主要因为多维数组切换成一维数组实在不方便。

  1. '注意事项:  1、在表1上需要加一行表头。
  2. '           2、需要引用ADO库(Microsoft ActiveX Data Object),可能版本号不同,但不影响使用。
  3. '           3、使用前必须确保先启用宏(Office2003 版位置:工具\宏\宏安全性;
  4. '                                   2010版本位置:文件\选项\受信任中心\受信任中心设置\宏设置)。
  5. '           4、如果修改其它内容,请修改ssql语句和其它相关内容以适。

  6. '编写: Roych
  7. '日期: 2012-12-13

  8. Sub ImpData()
  9. Dim cnn As New ADODB.Connection
  10. Dim rst As New ADODB.Recordset
  11. Dim ssql As String
  12. Sheets("表2").Range("A:B").ClearContents
  13. cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
  14. ssql = "select * from( select 公司,产品1 from [表1$] union select 公司,产品2 from [表1$] union " _
  15.         & "select 公司,产品3 from [表1$] union select 公司,产品4 from [表1$] union " _
  16.         & "select 公司,产品5 from [表1$] union select 公司,产品6 from [表1$] union " _
  17.         & "select 公司,产品7 from [表1$] union select 公司,产品8 from [表1$] union " _
  18.         & "select 公司,产品8 from [表1$] union select 公司,产品10 from [表1$] union " _
  19.         & "select 公司,产品11 from [表1$] union select 公司,产品12 from [表1$] union " _
  20.         & "select 公司,产品13 from [表1$] union select 公司,产品14 from [表1$] union " _
  21.         & "select 公司,产品15 from [表1$] union select 公司,产品16 from [表1$] )  where isnull(产品1)=False"
  22. rst.Open ssql, cnn, adOpenKeyset, adLockOptimistic
  23. Sheets("表2").[a1].CopyFromRecordset rst
  24. rst.Close
  25. Set rst = Nothing
  26. cnn.Close
  27. Set cnn = Nothing
  28. End Sub
复制代码
[attach]47629[/attach]
作者: wgh3g    时间: 2011-12-13 19:41
看看
作者: pureshadow    时间: 2011-12-14 17:04
居然趁我不在的时候。。。。。还用了代码,汗
作者: Javert    时间: 2011-12-15 08:55
pureshadow 发表于 2011-12-14 17:04
居然趁我不在的时候。。。。。还用了代码,汗

谢谢小妖同学,代码还不是很懂,你那个倒是看懂了,后来研究下了公式,用这个做出来的
{=INDEX(Sheet2!A:A,25-MATCH(ROW(),SUBTOTAL(3,OFFSET(Sheet2!B$1,,,25-ROW($124),20)),-1))}
=OFFSET(Sheet2!A$1,MATCH(A1,Sheet2!A:A,)-1,COUNTIF(A$1:A1,A1))
作者: Javert    时间: 2011-12-15 09:38
Javert 发表于 2011-12-15 08:55
谢谢小妖同学,代码还不是很懂,你那个倒是看懂了,后来研究下了公式,用这个做出来的
{=INDEX(Sheet2!A ...

但是按你方法做出来之后,就是显示顺序不一样了哦
作者: Javert    时间: 2011-12-15 09:52
如果不用排序筛选的话该怎么弄呢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3