- 公開日:
スプレッドシートのグラフの範囲を可変にする方法
スプレッドシートは売上の管理などに使用される機会が非常に多いです。
そのため、売上表を基にグラフを作成した際に、「日々追加されていく売上データが自動でグラフに反映されるようにしたい」「特定の期間だけをグラフに表示させたい」などという場合があるかと思います。
この記事では、スプレッドシートのグラフに表示されるデータを可変にする方法をご紹介します。
スプレッドシートのグラフの範囲を可変にする方法
スプレッドシートのグラフに表示されるデータを可変にする方法を2通りご紹介します。
余分なセルも範囲に含める
グラフのデータ範囲に余分な空白セルも含めておくことで、後々グラフにデータを追加していくことができるようになります。
詳しい方法は以下の通りです。
まず、入力されている表を基にグラフを作成します。
①グラフの基にする表(例:A1セルからB11セル)、②「挿入」タブの順に選択します。
「グラフ」を選択します。
グラフを作成できました。次に、グラフのデータ範囲に空白セルを余分に含めます。
①作成されたグラフを選択し、②グラフ内の右上にある縦に並んだ「…」ボタンを押します。
「グラフを編集」を選択します。
画面右側に「グラフエディタ」が表示されました。
「データ範囲」に余分な空白セルを含めた表の範囲(例:A1:B20)を改めて入力し直します。
グラフのデータ範囲に余分な空白セルを追加できました。
以上の操作により、範囲に含まれる空白セルにデータを入力した場合、自動でグラフにもデータが追加されるようになりました。
それでは、正しくグラフにデータが追加されるか確認します。
グラフのデータ範囲に含まれる空白セル(例:A12セルからB16セル)にデータを入力します。
空白セル(例:A12セルからB16セル)にデータを入力しました。
すると、グラフにも自動的に入力データが追加されました。
コードでグラフの期間を指定する
コードを利用することで、指定した期間のデータだけをグラフに表示させることができます。
詳しい方法は以下の通りです。
あらかじめスプレッドシートにグラフの基となるデータを作成し、シート名も分かりやすいもの(例:売上)に変更しておきます。
次に、グラフを作成するためのシートを追加します。
①画面左下の「+」ボタンを押し、②追加されたシートの名前を任意のもの(例:グラフ)に変更します。
グラフを作成するためのシートを追加できました。次に、グラフを作成します。
①追加したシートの任意のセル(例:A1セル)、②「挿入」タブ、③「グラフ」の順に選択します。
グラフが挿入され、画面右側に「グラフエディタ」が表示されました。
次に、グラフに正しくデータが表示されるよう、データ範囲に作成しておいた表を選択します。
「グラフエディタ」の「データ範囲を選択」ボタンを押します。
「データ範囲の選択」ダイアログボックスが表示されました。
ダイアログボックスが表示されている状態で、①シート名(例:売上)を選択して表が入力されているシートに移動します。
②グラフの基にする表を選択します。
ダイアログボックスに選択した範囲が正しく記載されていることを確認し、③「OK」ボタンを押します。
グラフにデータが正しく表示されました。
それでは、コードを利用してグラフに表示される期間を変更できるように設定していきます。
まず、期間を指定する際に①開始日、②終了日を入力するセルをそれぞれ作成します。
次に、スプレッドシートにコードを保存します。
①「拡張機能」タブ、②「Apps Script」の順に選択します。
「Apps Script」が表示されました。
①以下のコードをコピーして貼り付けます。
function makeGraphData() {
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var グラフSheet = objSpreadsheet.getSheetByName("グラフ");
var 売上Sheet = objSpreadsheet.getSheetByName("売上");
売上Sheet.showRows(1, 売上Sheet.getMaxRows()); // 全ての行を表示
var startValue = グラフSheet.getRange("A2").getValue(); // 開始日の値を取得
var endValue = グラフSheet.getRange("C2").getValue(); // 終了日の値を取得
var data = 売上Sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var date = data[i][0];
if (date < startValue || date > endValue) {
売上Sheet.hideRows(i + 1);
}
}
Browser.msgBox("指定された日付の範囲外の行を非表示にしました", Browser.Buttons.OK);
}
コードの「売上」となっている箇所は表が入力されているシートの名前に、「グラフ」となっている箇所はグラフが作成されているシートの名前にそれぞれ変更してください。
また、("A2")("C2")
は、先ほど作成した「開始日」「終了日」を入力するセルに変更してください。
そして「var date = data[i][0];」の「0」は、日付データが入力されている列を指定しています。
A列に入力されていれば「0」、B列に入力されていれば「1」、C列に入力されていれば「2」というように、適した数字を入力してください。
コードを正しいものに編集できたら、②「プロジェクトを保存」ボタンを押します。
コードを保存できました。次に、スプレッドシートにコードを実行するためのボタンを作成します。
コードの「makeGraphData」をコピーし、スプレッドシートの編集画面に戻ります。
スプレッドシートの編集画面に戻りました。
①「挿入」タブ、②「図形描画」の順に選択します。
「図形描画」ダイアログボックスが表示されました。
①「図形」ボタンを押し、②「図形」、③任意の図形(例:長方形)の順に選択します。
任意の範囲を選択し、図形を作成します。
図形を作成できました。「保存して終了」ボタンを押します。
スプレッドシートに図形が挿入されました。
①図形を選択して配置や大きさを変更し、②図形内の縦に並んだ「…」ボタンを押します。
「スクリプトを割り当て」を選択します。
「スクリプトを割り当て」ダイアログボックスが表示されました。
①入力ボックスに先ほどコピーした「makeGraphData」を「Ctrl+V」などで貼り付け、②「確定」ボタンを押します。
コードを実行するためのボタンを作成できました。次に、コードを実行し、グラフの期間が正しく変更されるか確認します。
①期間の「開始日」(例:3/10)、②「終了日」(3/20)をそれぞれ入力し、③作成したボタンを押します。
この際、「認証が必要です」ダイアログボックスが表示された場合には、コードを実行するための権限の設定を変更する必要があります。
「OK」ボタンを押します。
ログイン画面が表示されました。
任意のGoogle アカウントを選択します。
画面に「このアプリは Google で確認されていません」と表示されました。
「詳細」を選択します。
「(安全ではないページ)に移動」を選択します。
権限のリクエスト画面が表示されました。「許可」ボタンを押します。
以上の操作で権限の設定を変更できました。
自動的にスプレッドシートに戻りました。
再度、コード実行のボタンを押します。
ダイアログボックスが表示されました。「OK」ボタンを押します。
コードが正常に実行され、指定した期間のみのデータがグラフに表示されました。
コードを使ってグラフの期間を変更することができました。