🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

2049閲覧

Googleスプレッドシートでのsortがうまく動かない

mk.3

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/01/22 02:18

編集2021/01/22 02:32

前提・実現したいこと

おそらく初歩的な質問となってしまいますがよろしくお願いします。

下記の内容を実現するためにGoogleスプレッドシートとGASを使用しています。

  1. Androidタブレットにて入力内容がマスターデータと一致しているか確認したい
  2. その為にVLOOKUP関数でマスターのCと入力内容D(水色)を照会する
  3. 照会する為には 順不同で入力されたD列を入力後にGASで並び替え処理を行う必要がある

※A列のプルダウンメニューをトリガーに実行する想定です

3の太字部分の実現にsortを使用しているのですがエラーが出てしまいます。

イメージ説明

発生している問題・エラーメッセージ

Exception: Cell reference out of range

スプレッドシート上では
「Exception: 範囲外のセル参照です」と出てきます。

該当のソースコード

Google Apps Scriptにて

SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D63").sort(1)

上記のように記述して実行を行いますがエラーが出て失敗します。

試したこと

範囲指定が悪いのかと思い
シート名の指定

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("対象シート").getRange("D4:D63").sort(1)

数字表記での

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("対象シート").getRange(4,4,60,1).sort(1)

などに変更してみましたがうまくいきません。

getRangeで同様の範囲の入力内容をコピーして別シートに転写するなどの動作は成功した為
sortの使い方が誤っている気がします

独学で始めたばかりなため、それ以前の何か根本的な部分が間違っている可能性もありそうですが…
御教授お願いします。

補足情報(FW/ツールのバージョンなど)

もしかしてsort以外の方法がありますでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

sortは列番号を指定するのでD列なら.sort(4)ですかね。

投稿2021/01/22 02:54

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macaron_xxx

2021/01/22 02:56

ちなみにVLOOKUPは第4引数をFALSEとしておけば、順不同で大丈夫ですよ。 厳密にはFALSEは完全一致のみですが、今回はマスタ照会なので、問題ないと思います。
macaron_xxx

2021/01/22 02:57

あ、どのみちマスタがC列なら、並び替えが必要になるのはC列ですね。
mk.3

2021/01/22 04:17 編集

解決しました。 sort(X)でサンプルコードなどの作例見ているとXは(1)や範囲指定となっていたためにgetRangeした座標からの相対座標と勘違いしておりました Xはシートの絶対座標の列を指定すればよかったのですね。 この部分を勘違いしていたために調べてもわからなかったので助かりました。 ありがとうございます。
mk.3

2021/01/22 04:19 編集

本題とずれるために割愛しておりましたが、本システムは 1、黄色に完成品番を入力 2、完成品番を元にマスター(別シート)から構成一覧をC列にVLookUPで呼出 3、D列に入力 4、CとD列を =IF(EXACT(C6,D6),"OK","NG")という風に構成品ごとに合否判定 5、列全体の合否を集計して異常がなければOK判定を表示 という構成になっておりました。構成が60品まである想定だったのでこういう形にしておりましたが 合否判定の部分をもう少しスマートにできるように次回工夫したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問