找回密码
 加入
搜索
查看: 1420|回复: 8

[AU3基础] 获取EXCEL某一列数据数量

[复制链接]
发表于 2022-2-12 09:30:17 | 显示全部楼层 |阅读模式
请问一下各位怎样获取EXCEL某一列有多少个数据呢?是否有直接的函数?搜索无果……
发表于 2022-2-12 09:52:05 | 显示全部楼层
1. 获取最后有数据的位置
2. 单元格不为空的数量
$oe=ObjCreate("excel.application")
$oe.visible=True
$wb=$oe.workbooks.add
With $wb.activesheet
        .range("b2,b5,b9").value="123"
        ConsoleWrite("B列有数据的最后一行是:"&.cells(.rows.count,2).end(3).row&@CRLF)
        ConsoleWrite("B列有数据的单元格数量是:"&.application.countif(.columns(2),"<>")&@CRLF)
EndWith
获取非空单元格是调用的工作表公式

点评

谢谢,测试可以达到目标。具体语法我再研究研究  发表于 2022-2-12 14:06

评分

参与人数 2金钱 +60 收起 理由
DaNFromAu3 + 20 谢谢
itzyx + 40 点赞 学习一下

查看全部评分

发表于 2022-2-12 11:00:29 | 显示全部楼层
本帖最后由 itzyx 于 2022-2-12 11:03 编辑

百度学习了一下  还可以这样写:
假如数据在A列,如果统计数字个数,则=count(a:a),如果统计所有类型个数,则=counta(a:a)。如果按条件统计,比如统计A列为优秀的个数,则=countif(a:a,"优秀")
举例:
#include<Excel.au3>

Local $oexcel=_Excel_open()                                               
Local $path=@ScriptDir&'\目录清单.csv'
$owork=_Excel_BookOpen($oexcel,$path)
Local $Write1=_Excel_RangeWrite($owork,"目录清单",'=COUNTA(A:A)','B1',TRUE)  ;写入公式
Local $Write2=_Excel_RangeWrite($owork,"目录清单",'=COUNT(A:A)','B2',TRUE)
Local $Write3=_Excel_RangeWrite($owork,"目录清单",'=COUNTIF(A:A,"优秀")','B3',TRUE)
Local $Read1=_Excel_RangeRead($owork,"目录清单",'B1')   ;读取值
Local $Read2=_Excel_RangeRead($owork,"目录清单",'B2')
Local $Read3=_Excel_RangeRead($owork,"目录清单",'B3')
MsgBox(0,'','A列的数量:'&$Read1&',A列数字的数量:'&$Read2&',A列“优秀”值的数量:'&$Read3)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2022-2-12 11:49:14 | 显示全部楼层
itzyx 发表于 2022-2-12 11:00
百度学习了一下  还可以这样写:
假如数据在A列,如果统计数字个数,则=count(a:a),如果统计所有类型个数 ...

为什么我没有_excel_open()、_excel_rangewrite()等函数呢
发表于 2022-2-12 12:09:16 | 显示全部楼层
DaNFromAu3 发表于 2022-2-12 11:49
为什么我没有_excel_open()、_excel_rangewrite()等函数呢

那可能你的AU3版本太低了,可以在论坛下载个新的版本  
https://www.autoitx.com/thread-72638-1-1.html

评分

参与人数 1金钱 +20 收起 理由
DaNFromAu3 + 20 谢谢

查看全部评分

发表于 2022-2-14 09:28:56 | 显示全部楼层
是想获取己建的EXCEL某一列有多少个数据?
 楼主| 发表于 2022-2-14 13:02:28 | 显示全部楼层
chzj589 发表于 2022-2-14 09:28
是想获取己建的EXCEL某一列有多少个数据?

是的,我想知道是否有直接的函数。
发表于 2022-2-14 13:09:11 | 显示全部楼层
本帖最后由 chzj589 于 2022-2-24 14:28 编辑
DaNFromAu3 发表于 2022-2-14 13:02
是的,我想知道是否有直接的函数。

直接的函数

Local $M="A"
Local $aResult = _Excel_RangeRead($oWorkbook, Default, $M & "1:" & $M & $iRo, 1)


您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 17:15 , Processed in 0.088142 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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