Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2342|回复: 4

[已解决]如何查询这种列数据?

[复制链接]
发表于 2014-5-4 08:15 | 显示全部楼层 |阅读模式
本帖最后由 阿柔 于 2014-5-4 10:18 编辑

附件 查询列数据.rar (351.83 KB, 下载次数: 13)
发表于 2014-5-4 09:54 | 显示全部楼层
  1. Sub test()
  2.     Set fso = CreateObject("scripting.filesystemobject")
  3.     Set ff = fso.getfolder(ThisWorkbook.Path)
  4.     For Each fff In ff.subfolders
  5.        col = Replace(fff, ff & "", "")
  6.        For Each f In fff.Files
  7.          r = Val(Replace(f, fff & "", ""))
  8.          Workbooks.Open f
  9.          n = ActiveWorkbook.Sheets(1).UsedRange.Columns.Count
  10.          If n = 1 Then If Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets(1).Range("a:a")) = 0 Then n = 0
  11.          ActiveWorkbook.Close False
  12.          Cells(r, col) = n
  13.        Next
  14.     Next
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-4 09:57 | 显示全部楼层
加上注释。
  1. Sub test()
  2.     Set fso = CreateObject("scripting.filesystemobject")
  3.     Set ff = fso.getfolder(ThisWorkbook.Path)   '取得当前文件夹名
  4.     For Each fff In ff.subfolders       'fff为当前文件夹下所有子文件夹名(全路径)
  5.        col = Replace(fff, ff & "", "")    '子文件夹名(列号)
  6.        For Each f In fff.Files   'f为当前子文件夹下所有文件名(全路径)
  7.          r = Val(Replace(f, fff & "", ""))   '文件名(行号)
  8.          Workbooks.Open f
  9.          n = ActiveWorkbook.Sheets(1).UsedRange.Columns.Count   '文件中列数
  10.          If n = 1 Then If Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets(1).Range("a:a")) = 0 Then n = 0   '把列数为0的情况找出来
  11.          ActiveWorkbook.Close False
  12.          Cells(r, col) = n
  13.        Next
  14.     Next
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-4 09:59 | 显示全部楼层    本楼为最佳答案   
请看附件。

查询列数据.rar

364.95 KB, 下载次数: 21

评分

参与人数 1 +1 收起 理由
阿柔 + 1

查看全部评分

回复

使用道具 举报

发表于 2014-5-4 10:25 | 显示全部楼层
更严谨一点应该是这样。。。。。。
  1. Sub test()
  2.     Application.ScreenUpdating = False
  3.     Set fso = CreateObject("scripting.filesystemobject")
  4.     Set ff = fso.getfolder(ThisWorkbook.Path)   '取得当前文件夹名
  5.     For Each fff In ff.subfolders       'fff为当前文件夹下所有子文件夹名(全路径)
  6.        col = Replace(fff, ff & "", "")    '子文件夹名(列号)
  7.        For Each f In fff.Files   'f为当前子文件夹下所有文件名(全路径)
  8.          r = Val(Replace(f, fff & "", ""))   '文件名(行号)
  9.          Workbooks.Open f
  10.          Set sh = ActiveWorkbook.Sheets(1)
  11.          n = 0
  12.          mc = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column  '最大列数
  13.          For i = 1 To mc
  14.              If Application.WorksheetFunction.CountA(sh.Columns(i)) > 0 Then n = n + 1 '把非空列找出来
  15.          Next
  16.          ActiveWorkbook.Close False
  17.          Cells(r, col) = n
  18.        Next
  19.     Next
  20.     Application.ScreenUpdating = True
  21. End Sub

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 20:09 , Processed in 0.310655 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表