特定の値でExcelのセルを削除しようとしています。私は非常に遠くまで行き、インターネットからいくつかの抜粋を借りて独自のスクリプトを作成しました。
set theOutputPath to (path to desktop folder as string) & "FilteredNY.csv"
set fstring to "(Not NY State)"
tell application "Microsoft Excel"
activate
open workbook workbook yatta yatta
activate object worksheet 1
-->activate range current region
set LastRow to ((count of rows of used range of active sheet) + 1)
set lastCol to count of columns of used range of active sheet
set lastCol to (get address of column lastCol without column absolute)
set lastCol to (characters 1 thru ((length of lastCol) div 2) of lastCol as string)
set fullRange to range ("2:" & LastRow)
repeat with i from 2 to LastRow
--code in repeat
if value of cell ("J" & i) is equal to fstring then
delete range row i
end if
end repeat
end tell
fullRange 変数と先頭に設定された path 変数を含め、ほとんどのコードはそれほど重要ではありません。問題は、削除コードが2行目以降も進行せず、その上で実行が非常に遅くなるため、実際には多くの問題があります。私が作ったそのループには何か問題があるに違いないと思います。誰かが私を正しい軌道に乗せることができれば、それは素晴らしいことです.
私は実際に最近、多くの実験/掘り下げた後、問題を発見しました。範囲を削除しているときに、行が実際に先頭のExcelをシフトして間違った範囲を削除しました。現在、不要な行をクリアし、すべての空白セルを非表示にしてから、表示されているすべてのセルを新しいシートにコピーするという回避策に取り組んでいます。
さて、別の更新、最後の更新です。私はついにスクリプトを完成させ、必要なことを実行できるようにしました。すべてのクリア、非表示、およびコピーの代わりに、削除するすべての行を配列に追加することで削除を機能させ、配列を範囲の文字列に変換して、削除範囲がすべての行を一度に削除するのに機能するようにしました。これは、より高速でシンプルなソリューションです。
これが素晴らしいアップルスクリプトです:
set theOutputPath to (path to desktop folder as string) & "FilteredNY.csv"
set fstring to "(Not NY State)"
set del_list to {}
tell application "Microsoft Excel"
activate
open workbook workbook file name yatta yatta
activate object worksheet 1
set LastRow to ((count of rows of used range of active sheet))
repeat with i from 2 to LastRow
--code in repeat
if value of cell ("J" & i) is equal to fstring then
set di to i as string
set end of del_list to di & ":" & di
end if
end repeat
set AppleScript's text item delimiters to ","
set ToDelete to del_list as string
set AppleScript's text item delimiters to {""}
delete range range ToDelete
end tell
これが誰かを助けてくれることを願っています!私は自分の質問を自分で解決する悪い癖があります。:)。