AppleScript& Excel:特定值的搜索范围和返回警报(如果找到)

时间:2014-01-17 22:26:36

标签: excel applescript applescript-excel

我是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知识令我感到沮丧,因为我已经接近完成这个脚本,但无法克服这个障碍。感谢您的任何反馈!

2 个答案:

答案 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的奇怪之处,虽然它有点迟钝但支持都在那里。