我正在尝试将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中,我确实在指定的列中格式化了01/01/2001的确切日期。当我移除范围并且它只是单元格A14 (日期在那里)时,它就工作了。但是当我包括A14:A 100的范围时,它就不起作用了。
我对applescript还不熟悉,我猜它不会将值存储为数组值,而是一个string对象?如能提供任何帮助,将不胜感激。
发布于 2018-10-08 18:03:27
你有四个问题:
1)范围的值不应在{}之间,而应在()之间。
2) 'Date‘是Applescript中的一个保留字,因此不应该将它用作循环中的变量。我把它换成了“myDate”。
3)与其将日期转换为字符串以与"01/01/2001“进行比较,不如继续比较两个日期,然后再与"01/01/2001”进行比较。
4)我认为这是一个错误(至少在我的Excel版本中是这样),但是rangeDate变量不是预期的日期列表,而是列表的列表:{01/02/01},{02/02/01},………}因此,“rangeDate”的每个成员不是一个日期,而是一个列在一个项目上的日期!我不确定,但也可能是范围定义可以是一个范围列表.所以我用的是子列表的第一项。
不管怎么说,下面的脚本是有效的:
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发布于 2020-12-05 05:44:25
快速获取一系列单元格的值是个好消息!但更好的是,您可以通过定义范围的值来填充范围的值。这比一次只做一个细胞要快得多。
当我尝试获取列的值(一个单元格的范围)时,我收到了一个列表列表。列表中的每个项只有一个值,即单元格的值。
为了加速复杂的操作,一旦得到了值列表,就把进程从"tell Excel“块中取出来,让AppleScript进行计算。然后将结果返回到列表列表中,并在Excel中定义范围的值。
发布于 2022-01-28 10:50:10
我在读取包含#值的单元格时遇到了问题!(公式失败)。我没有在互联网上找到解决方案,所以我想在这里分享我的解决方案是个好主意。欢迎您提出意见和改进。我倾向于认为有一个比这更直接的解决办法。:)
获取具有范围值的所有值可能会导致脚本输出混乱的问题。AppleScript不认为单元格的内容"# value !“(=缺失值)是一个值,因为它是缺失的。因此,脚本在值列表中不包含单元格的内容。这显然会扰乱值列表中的单元格顺序,因为它的项比实际范围中的单元格少。在这种情况下,很难将每个值返回到工作簿中的原始单元格。将“范围”添加到代码中包括了解决问题的所有缺少值的单元格。
注:这些值将显示为一维数组。处理多列范围需要更多的工作。尽管如此,缺失的值还是包括在内。
set celVals to (value of ranges of range "A1:A4")例如{2.2.2022,1.1.2011,缺失值,3.3.2033}
为了将值返回到工作簿,需要构建列表列表。缺少的值将作为空字符串写入其单元格。当然,如果需要,可以编写原始(失败)公式。
又来了。此代码仅适用于一列情况。需要更多的时间才能将多列范围放回。我相信你能行的。:D
set returningCelVals to {}
repeat with i from 1 to count of celVals
set end of returningCelVals to {item i of celVals}
end repeat
set value of range ("A1:A4") to returningCelVals编辑:我知道有更好的解决方案。下面是:
set celVals to string value of range "A1:A4"String值给出了范围内值和错误消息的二维数组.字符串值也会给出例如单元格的货币符号,因此它可能并不适合所有情况。
https://stackoverflow.com/questions/52703780
复制相似问题