我是AppleScript的新手,并且已经开始整理一个脚本来获取电子表格并将其格式化以导入到另一个应用程序中。这是一份月度捐赠单,没有捐赠者身份证明书上列出的任何捐赠者,所以我已经指定了一个VLOOKUP功能来搜索另一张表中已知捐赠者的捐赠者ID,并将其分配到旁边的单元格中捐赠者的名字。所有已知的捐赠者都会输入他们的ID,而未知的捐赠者会返回“#N / A”。脚本的这一部分工作得很好,现在我需要找出在这些单元格范围内搜索“#N / A”值的方法,并返回“New Donor”显示警告(如果有的话)。我已经搜索了互联网,试图找出在该范围内的每个单元格中搜索一系列单元格以获得精确值的最佳方法,并返回警报(如果有),但没有找到任何我能够做到的去上班。这就是我所拥有的:
tell worksheet "Sheet 1" of active workbook
set value of cell "A5" to "DonorID"
autofit columns of range "A1:A100"
set lastRow to ((count of rows of used range of active sheet) - 13)
set myRange to range ("A6:A" & lastRow) of active sheet
set formula of myRange to "=VLOOKUP($C$6:$C$90,'[Donor ID.xlsx]Sheet1'!$A$1:$B$60, 2, FALSE)"
set value of cell "F5" to "Donation Method"
set myRange2 to range ("F6:F" & lastRow) of active sheet
set formula of myRange2 to "=IF(D6=\"\",\"Check\", IF(D6=\"CC\",\"Credit Card\", IF(ISNUMBER(SEARCH(\"E\",D6)),\"EFT\",\"#N/A\")))"
end tell
所以我需要搜索值为“#N / A”的值为“#N / A”的lastRow(每月更换捐赠者数量)A6到A范围内每个单元格的值,如果有,则显示警告说“新捐助者”。我试过这个没有成功:
if myRange contains the value "#N/A" then
display alert "New Donor"
end if
当有一个时,它不会拿起“#N / A”。我也尝试过其他一些东西,但情况更糟。我缺乏AppleScript知识令我感到沮丧,因为我已经接近完成这个脚本,但无法克服这个障碍。感谢您的任何反馈!
答案 0 :(得分:0)
一种(不幸的)方式:
repeat with i from 6 to lastrow
set end of myList to cell ("Sheet1!A" & i) string value
end repeat
if myList contains the value "#N/A" then display alert "New Donor"
Applescript列表和Excel范围是不同的数据类型,因此您的搜索无用。你必须自己动手。
...米克
答案 1 :(得分:0)
find
命令可以执行您所需的操作,请参阅下面的代码并使用范围值来满足您的代码。
如果您需要查找倍数并处理它们,请参阅此answer的查找部分。
tell application "Microsoft Excel"
try
set found_range to find (range "A:A") what "#N/A" look at whole with match case
on error
log ("No matches found")
end try
if (found_range is not "") then
display dialog "You found one @ " & (get address of the cells of found_range)
end if
end tell
Excel可能是AppleScripting的奇怪之处,虽然它有点迟钝但支持都在那里。