我正在尝试使用 applescript 访问 excel 单元格,并且单元格编号不断变化,并且每当我将单元格值设置为例如 20 时,它都会被视为 20.0,这会导致错误。提前致谢。
问问题
1720 次
2 回答
0
我找到了一个满足您需求的脚本(来自http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html),因此您可能想试试这个:
my round_truncate(20.0, 0)
on round_truncate(this_number, decimal_places)
if decimal_places is 0 then
set this_number to this_number + 0.5
return number_to_text(this_number div 1)
end if
set the rounding_value to "5"
repeat decimal_places times
set the rounding_value to "0" & the rounding_value
end repeat
set the rounding_value to ("." & the rounding_value) as number
set this_number to this_number + rounding_value
set the mod_value to "1"
repeat decimal_places - 1 times
set the mod_value to "0" & the mod_value
end repeat
set the mod_value to ("." & the mod_value) as number
set second_part to (this_number mod 1) div the mod_value
if the length of (the second_part as text) is less than the decimal_places then
repeat decimal_places - (the length of (the second_part as text)) times
set second_part to ("0" & second_part) as string
end repeat
end if
set first_part to this_number div 1
set first_part to number_to_text(first_part)
set this_number to (first_part & "." & second_part)
return this_number
end round_truncate
on number_to_text(this_number)
set this_number to this_number as string
if this_number contains "E+" then
set x to the offset of "." in this_number
set y to the offset of "+" in this_number
set z to the offset of "E" in this_number
set the decimal_adjust to characters (y - (length of this_number)) thru -1 of this_number as string as number
if x is not 0 then
set the first_part to characters 1 thru (x - 1) of this_number as string
else
set the first_part to ""
end if
set the second_part to characters (x + 1) thru (z - 1) of this_number as string
set the converted_number to the first_part
repeat with i from 1 to the decimal_adjust
try
set the converted_number to the converted_number & character i of the second_part
on error
set the converted_number to the converted_number & "0"
end try
end repeat
return the converted_number
else
return this_number
end if
end number_to_text
于 2013-11-04T09:23:00.517 回答
0
我的第一个建议是你应该举一些例子来接近你需要的答案。你如何得到这个“20.0”?这看起来像是 Excel 的自动化,而不是 Applescript。因此,只要您使用 Applescript,就可以调用
set myLineNumber to 20
get value of cell (A & myLineNumber)
现在,如果您从 Excel 中获得“20”值,那是另一回事,因为 Excel 对数字值可能会非常讨厌。我这里没有我的 Mac,但尝试了类似的东西
set myLineNumber to valueFromExcel mod 1 -- "mod" is for modulo
应该做你需要的。
您还可以使用“casting”,这意味着将诸如“20”之类的文本值转换为 20 之类的数字。对于您的情况,这将是:
set myLineNumber to (valueFromExcel as integer) -- valueFromExcel being "20" or 20.0 for instance
于 2013-11-04T20:54:41.540 回答