• 公開日:

スプレッドシートのグラフの範囲を可変にする方法

スプレッドシートは売上の管理などに使用される機会が非常に多いです。

そのため、売上表を基にグラフを作成した際に、「日々追加されていく売上データが自動でグラフに反映されるようにしたい」「特定の期間だけをグラフに表示させたい」などという場合があるかと思います。

この記事では、スプレッドシートのグラフに表示されるデータを可変にする方法をご紹介します。

スプレッドシートのグラフの範囲を可変にする方法

スプレッドシートのグラフに表示されるデータを可変にする方法を2通りご紹介します。

余分なセルも範囲に含める

グラフのデータ範囲に余分な空白セルも含めておくことで、後々グラフにデータを追加していくことができるようになります。

詳しい方法は以下の通りです。

挿入タブを選択する

まず、入力されている表を基にグラフを作成します。

グラフの基にする表(例:A1セルからB11セル)、②「挿入」タブの順に選択します。

グラフを選択する

「グラフ」を選択します。

グラフの…ボタンを押す

グラフを作成できました。次に、グラフのデータ範囲に空白セルを余分に含めます。

作成されたグラフを選択し、②グラフ内の右上にある縦に並んだ「…」ボタンを押します。

グラフを編集を選択する

「グラフを編集」を選択します。

データ範囲を変更して余分なセルも範囲に含める

画面右側に「グラフエディタ」が表示されました。

「データ範囲」に余分な空白セルを含めた表の範囲(例:A1:B20)を改めて入力し直します。

表にデータを追加する

グラフのデータ範囲に余分な空白セルを追加できました。

以上の操作により、範囲に含まれる空白セルにデータを入力した場合、自動でグラフにもデータが追加されるようになりました。

それでは、正しくグラフにデータが追加されるか確認します。

グラフのデータ範囲に含まれる空白セル(例:A12セルからB16セル)にデータを入力します。

グラフが可変になった

空白セル(例:A12セルからB16セル)にデータを入力しました。

すると、グラフにも自動的に入力データが追加されました。

コードでグラフの期間を指定する

コードを利用することで、指定した期間のデータだけをグラフに表示させることができます。

詳しい方法は以下の通りです。

あらかじめ表を作っておく

あらかじめスプレッドシートにグラフの基となるデータを作成し、シート名も分かりやすいもの(例:売上)に変更しておきます。

シートを追加して名前を変更する

次に、グラフを作成するためのシートを追加します。

①画面左下の「+」ボタンを押し、②追加されたシートの名前を任意のもの(例:グラフ)に変更します。

挿入タブからグラフを選択する

グラフを作成するためのシートを追加できました。次に、グラフを作成します。

追加したシートの任意のセル(例:A1セル)、②「挿入」タブ、③「グラフ」の順に選択します。

データ範囲を選択ボタンを押す

グラフが挿入され、画面右側に「グラフエディタ」が表示されました。

次に、グラフに正しくデータが表示されるよう、データ範囲に作成しておいた表を選択します。

「グラフエディタ」の「データ範囲を選択」ボタンを押します。

作っておいた表を選択する

「データ範囲の選択」ダイアログボックスが表示されました。

ダイアログボックスが表示されている状態で、①シート名(例:売上)を選択して表が入力されているシートに移動します。

グラフの基にする表を選択します。

ダイアログボックスに選択した範囲が正しく記載されていることを確認し、③「OK」ボタンを押します。

期間指定用のセルを作成する

グラフにデータが正しく表示されました。

それでは、コードを利用してグラフに表示される期間を変更できるように設定していきます。

まず、期間を指定する際に①開始日、②終了日を入力するセルをそれぞれ作成します。

apps Scriptを選択する

次に、スプレッドシートにコードを保存します。

「拡張機能」タブ、②「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ボタンを押す

この際、「認証が必要です」ダイアログボックスが表示された場合には、コードを実行するための権限の設定を変更する必要があります。

「OK」ボタンを押します。

Googleアカウントを選択する

ログイン画面が表示されました。

任意のGoogle アカウントを選択します。

詳細ボタンを押す

画面に「このアプリは Google で確認されていません」と表示されました。

「詳細」を選択します。

安全ではないページに移動を選択する

「(安全ではないページ)に移動」を選択します。

許可ボタンを押す

権限のリクエスト画面が表示されました。「許可」ボタンを押します。

以上の操作で権限の設定を変更できました。

再度ボタンの押す

自動的にスプレッドシートに戻りました。

再度、コード実行のボタンを押します。

OKボタンを押す

ダイアログボックスが表示されました。「OK」ボタンを押します。

グラフが可変になった

コードが正常に実行され、指定した期間のみのデータがグラフに表示されました。

コードを使ってグラフの期間を変更することができました。