我正在尝试将excel列的所有值存储在数组中。
set rangeDate to {value of range "A14:A100"}
repeat with date in rangeDate
if (date as string is equal to "01/01/2001") then
log "It works"
end if
end repeat
在我的Excel中,我确实在指定的列中设置了2001年1月1日的确切日期。当我删除范围时,它只是单元格A14(日期在其中)有效。但是,当我包含范围A14:A100时,它不起作用。
我是applescript的新手,我想它不是将值存储为数组值,而是存储为字符串对象吗?任何帮助将不胜感激
答案 0 :(得分:2)
您有4个问题:
1)range的值不应在{}之间,而应在()之间
2)'Date'是Applescript中的保留字,因此您不应在循环中将其用作变量。我将其替换为“ myDate”。
3)而不是将日期转换为字符串以与“ 01/01/2001”进行比较,而是继续比较2个日期,然后与日期“ 01/01/2001”进行比较
4)我认为这是一个错误(至少在我的Excel版本中如此),但是rangeDate变量不是预期的日期列表,而是我的列表列表:{{01/02/01}, {02/02/01},………}因此,“ rangeDate”的每个成员都不是日期,而是一个作为日期的项目的清单!我不确定,但是也可能是范围定义可能是范围列表...所以我正在使用子列表的项目1。
无论如何,下面的脚本正在工作:
tell application "Microsoft Excel"
activate
tell active sheet of document 1
set rangeDate to (value of range "A14:A100")
repeat with mydate in rangeDate
set TheDate to item 1 of mydate
if TheDate = (date "lundi 1 janvier 2001 00:00:00") then
log "It works"
end if
end repeat
end tell
end tell
答案 1 :(得分:0)
快速获取一系列单元格的值是个好消息!但更好的是,您可以通过定义范围的值来填充范围的值。这比一次只做一个单元格要快得多。
当我尝试获取列的值(一定范围的单元格)时,我收到了一个列表列表。列表中的每一项只有一个值-即单元格的值。
要加快复杂操作的速度,一旦获得值列表,就将过程从“ tell Excel”块中移除,然后让AppleScript进行计算。然后将结果返回到列表列表,并在Excel中定义范围的值。