AppleScript获取Excel列的所有值

时间:2018-10-08 13:50:03

标签: excel applescript

我正在尝试将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的新手,我想它不是将值存储为数组值,而是存储为字符串对象吗?任何帮助将不胜感激

2 个答案:

答案 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中定义范围的值。