DaNFromAu3 发表于 2022-2-12 09:30:17

获取EXCEL某一列数据数量

请问一下各位怎样获取EXCEL某一列有多少个数据呢?是否有直接的函数?搜索无果……

kevinch 发表于 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获取非空单元格是调用的工作表公式

itzyx 发表于 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)

DaNFromAu3 发表于 2022-2-12 11:49:14

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

为什么我没有_excel_open()、_excel_rangewrite()等函数呢

itzyx 发表于 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

chzj589 发表于 2022-2-14 09:28:56

是想获取己建的EXCEL某一列有多少个数据?

DaNFromAu3 发表于 2022-2-14 13:02:28

chzj589 发表于 2022-2-14 09:28
是想获取己建的EXCEL某一列有多少个数据?

是的,我想知道是否有直接的函数。

chzj589 发表于 2022-2-14 13:09:11

本帖最后由 chzj589 于 2022-2-24 14:28 编辑

DaNFromAu3 发表于 2022-2-14 13:02
是的,我想知道是否有直接的函数。
直接的函数:face (1):
Local $M="A"
Local $aResult = _Excel_RangeRead($oWorkbook, Default, $M & "1:" & $M & $iRo, 1)


页: [1]
查看完整版本: 获取EXCEL某一列数据数量