Excel

【Excel】エクセルで1行おき(飛び飛び)に合計する方法【1行ごと・ 1つ飛ばしの合計】

当サイトでは記事内に広告を含みます

この記事では「エクセルにて1つ飛ばし(飛び飛び)の合計を求める方法」について解説していきます。

1行ごとの合計の算出方法としては下記のようなものが一般的に利用できます。

・統合機能

・SUMIF関数

・VBAマクロ

それでは、具体例を用いて解説しましょう。

 

エクセルで1行ごとに合計する方法【1つおきの合計:関数使用せず】

関数・マクロが利用できない制約がある場合においては、「統合」の機能により、目的を果たすことができます。

 

下記サンプルでは、各店舗(A~D店)の牛肉・豚肉の売り上げを書き出しています。

ここから、牛肉・豚肉の全店舗の合計売上を計算する想定です。

操作方法としては、セルB10及びB11を選択し、リボンより「データ」-「データツール」-「統合」を実行します。

「統合の設定」ダイアログで「統合元範囲」に$B$2:$C$9を設定し、「追加」ボタンを押します。

この時、集計の方法が「合計」になっていることを確認しましょう。

「統合元」に上記範囲が反映されたら、統合の基準を「左端列」に設定し、OKを押します。

ここまでの操作に誤りがなければ、牛肉・豚肉のそれぞれの合計売上が計算され、セルC10、C11に出力されます。

これが1つ目の1つ飛ばし(1行ごと)の合計を求める方法です。

 

エクセルで1行ごと(1つ飛ばし)に足し算する方法【1つおきの合計:関数を使用する方法】

上記の方法は操作手順を覚えるだけで目的を果たすことができるので、賢い方法にみえるかもしれません。

一方でリアルタイムに反映されない→値が変化したときは都度実行する必要があるといった煩わしさが残ってしまいます。

一般的には関数を用いるのが自然な手法であります。

下記ではSUMIF関数を利用した場合について、解説しています。

前例と同じサンプルデータにおいて、セルC10に「=SUMIF($B$2:$C$9, $B10, $C$2:$C$9)」と入力します。

この関数の意味を解説していきます。

SUMIF関数は、指定した範囲のなかから条件を満たすセルを検索して合計を求める関数であり、

=SUMIF(範囲,検索条件,合計対象範囲)

と入力します。

各引数には

・範囲($B$2:$B$9):検索対象のセル範囲

・検索条件(B10):「範囲」の中からセルを検索するための条件値

・合計対象範囲($C$2:$C$9):合計を求めたい数値が入力されているセル範囲

をそれぞれ指定します。

ENTERを押すと全店舗の牛肉の売り上げが計算されます。

同じくセルC11に「=SUMIF($B$2:$C$9, $B11, $C$2:$C$9)」と入力しENTERを押せば、目的達成です。

これが2つ目の1行おき(飛び飛び)に足し合わせる方法です。

 

エクセルで1行おき(飛び飛び)に合計する方法【マクロを使用する方法】

少し敷居は高いですが、マクロを利用した1つ飛ばしに合計する方法を紹介します。

マクロを利用するにはVBE(Visual Basic Editor)を起動する必要があり、キーボードで「Alt+F11」と同時押しします。

下記画面が開けばOKです。

左側のツリーの「VBAProject…」を右クリックし、「挿入」→「標準モジュール」を実行します。

「標準モジュール」-「Module1」をクリックし、エディタ画面を開きます。

そこへ下記コードを記述します。

コードの意味については下記の通りです。

Work:

マクロ名。エクセル側でこの名前が認識される。

Dim:

内部変数の宣言、本例ではループ用の「i」が使用されている。

Range(***).ClearContens :

セル「***」の値を空にする。

For i=0 To *** (処理) Next:

i=0からスタートし、(処理)に記載したことが実行される。

1周毎に「i」がインクリメント(1つずつ増える)される。

***まで到達したら終わり。

If *** = @@@ then (処理) end if

*** = @@@であれば(処理)が実行される。

Range(***).Offset(x,y):

セル「***」からみてx行y列のセルを指す。

なお、この記事で使用しているサンプルデータの処理対象は8行ですが、コード上では7を指定しています。

0→7で8周となる旨、注意が必要です。

 

コードが書けたら、VBEを閉じ、シートを表示します。

「Alt+F8」の同時押しで下記ダイアログが開きます。

「マクロ名」の中に、先ほど作成した「Work」がありますので、選択状態にして「実行」をクリックします。

これにより、「全店舗の合計値」を出力することができます。

 

まとめ エクセルで1行おきに合計する方法【1行ごと・ 1つ飛ばしの合計】

この記事では「エクセルにて1つ飛ばしの合計を求める方法」について、関数を使用しない場合と関数を使用する場合別に、解説しました。

最終的なゴールは1つでも、そこに至るまでのルートは1つとは限りません。

普段は利用しないルートでも、知っていることで不測の事態に強くなることができます。

余裕があるときは、普段していることに対して別の手法はないか、考えてみてもいいでしょう。