Google スプレッドシートは、データの整理や分析に非常に便利なツールです。しかし、特定の条件下でセルの値が重複した場合にアラートを表示させたいと考えることがあるかもしれません。今回は、Google Apps Scriptを使用して、セルの値が重複した際にアラートメッセージを表示する方法をご紹介します。
目的
このスクリプトの目的は、Google スプレッドシートの特定の範囲内で同じ値が2回以上選択された場合に、ユーザーに警告を発することです。これは、例えばスケジューリングやアンケートの集計などで、重複を避けたい場合に有用です。
ステップ1:スプレッドシートの準備
まず、Google スプレッドシートを開き、プルダウンリストが含まれる範囲を設定します。この例では、「プルダウンシート」という名前のシートに「A1:K4」という範囲でプルダウンリストを設定することを想定します。プルダウンリストの設定方法は以下の通りです。
- 「プルダウンシート」を開き、「A1:K4」の範囲を選択します。
- メニューバーから「データ」>「データ入力規則」を選択します。
- データ入力規則の設定画面で、「条件」セクションにおいて「リストからの項目」を選択します。
- 「リストの範囲」の入力ボックスに、プルダウンリストとして使用したい値が含まれる範囲を指定します(例: 「リストシート!A1:A10」)。
- 「保存」ボタンをクリックします。
ステップ2:Google Apps Scriptの開始
スプレッドシートのメニューバーから「拡張機能」>「Apps Script」を選択して、スクリプトエディタを開きます。新しいプロジェクトが開かれるので、既存のコードがあればそれを削除してください。
ステップ3:スクリプトの記述
スクリプトエディタに以下のコードをコピー&ペーストします。
function onEdit(e) {
var range = e.range;
var sheet = range.getSheet();
if (sheet.getName() === 'プルダウンシート' && range.getRow() >= 1 && range.getRow() <= 4 && range.getColumn() >= 1 && range.getColumn() <= 11) {
var currentValue = e.value;
var currentCell = range.getA1Notation();
// 同じ範囲の他のセルの値を取得
var values = sheet.getRange('A1:K4').getValues();
var count = 0;
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] === currentValue && ('A' + (i+1) + ':' + 'K' + (j+1)) !== currentCell) {
count++;
}
}
}
if (count > 1) {
SpreadsheetApp.getUi().alert('エラー: この項目は2回以上選択されています');
range.setValue(''); // 2回以上重複があればセルをクリア
}
}
}
このスクリプトは、セルが編集されるたびに自動的に実行されます。指定された範囲内で同じ値が2回以上選択されると、アラートメッセージが表示され、セルの値がクリアされます。
ステップ4:スクリプトの保存とテスト
スクリプトを保存し、スプレッドシートに戻ってテストを行います。指定された範囲内のセルで同じ値を2回以上選択してみてください。アラートメッセージが表示され、セルの値がクリアされるはずです。
まとめ
Google スプレッドシートでは、Google Apps Scriptを使用して、特定の条件下でセルの値が重複した場合にアラートを表示させることができます。この機能は、重複を避けたい場合やデータの整合性を保ちたい場合に特に便利です。
※参考にされる場合は自己責任でお願いします。