スプレッドシートのLCM関数|周期の重なる日・通分・まとめ買い数量を出す

スポンサーリンク

「Aさんの出勤は6日おき、配送は8日おき。次に両方が重なるのはいつ?」

スプレッドシートでシフトや点検の予定を管理していると、こんな疑問が出てきますよね。カレンダーを1日ずつ数えるのは手間がかかります。周期が3つ、4つと増えるほど、数え間違いも起きやすくなるはず。

そこで使えるのが、スプレッドシートのLCM関数です。周期の数字を渡すだけで、何日おきに重なるかを最小公倍数で返してくれます。

この記事では、LCM関数の書き方と3つの実務での使い方を紹介します。周期の重なる日・分数の通分・まとめ買いの箱数を、コピーして試せるサンプル表つきで解説。範囲指定のコツや、小数・負の数を渡すときの注意点もまとめました。

スプレッドシートのLCM関数とは?書き方と最短の使い方

LCM関数(読み方: エルシーエム関数)は、指定した整数の最小公倍数を返す関数です。名前は「Least Common Multiple(最小公倍数)」の頭文字から来ています。

最小公倍数とは、どの数でも割り切れる数のうち一番小さいもの。たとえば4と6なら、両方で割り切れる最小の数は12になります。

構文と引数(2個・3個・セル参照)

=LCM(値1, [値2, ...])
引数必須/任意説明
値1必須最小公倍数を求める最初の値、またはセル範囲
値2, …任意追加の値、またはセル範囲

Googleの公式ヘルプでは、LCM関数は「1以上の整数の最小公倍数を返す」と説明されています。値は数字を直接書いても、セルを指定してもかまいません。

まずは数字を直接入れて、結果を確かめてみましょう。

=LCM(4, 6)
数式結果考え方
=LCM(4, 6)124の倍数と6の倍数で最初に一致する数
=LCM(3, 5)15共通の約数がない(互いに素)ので積がそのまま答え
=LCM(8, 12)248, 16, 24 と 12, 24 を比べて最初に一致する数
=LCM(4, 6, 10)603つの数すべてで割り切れる最小の数

値は3つ以上並べてもOK。実務では、セルに入れた数字を参照する書き方のほうが使いやすいでしょう。

=LCM(A1, B1)

A1に「4」、B1に「6」が入っていれば、結果は「12」です。周期や入り数を書き換えると結果も自動で変わるので、表で管理するときに便利ですよ。

NOTE

Excel版との違い: 構文はほぼ同じで、Excelでは =LCM(数値1, [数値2], ...) と書きます。Excelの公式ヘルプには「引数は255個まで」「負の数は #NUM!」「結果が2^53以上で #NUM!」と明記されています。一方、スプレッドシートの公式ヘルプにはこれらの記載がありません。Excelでの使い方はExcelのLCM関数の使い方を参考にしてみてください。

GCD関数との違い(約分ならGCD)

LCM関数と対になるのが、最大公約数を返すGCD関数です。名前が似ているので、違いを表で押さえておきましょう。

項目LCM関数GCD関数
求めるもの最小公倍数最大公約数
12と18の結果366
向いている場面周期をそろえる・通分・数量をそろえる約分・比率を簡単にする・共通の単位を探す

ざっくり言えば、LCMは「そろえる」ための計算、GCDは「小さくまとめる」ための計算。約分や共通の約数を求めたいなら、GCD関数の出番です。

2つの関数には「GCD × LCM = 2つの数の積」という関係があります。12と18なら、6 × 36 = 216 で、12 × 18 = 216 と一致。この関係を使うと、LCMの結果をGCDで検算できます。

=A1*B1/GCD(A1, B1)

A1に「12」、B1に「18」なら結果は36。=LCM(A1, B1) と同じ値です。使い分けの詳しい解説は、スプレッドシートのGCD関数の使い方にまとめています。

周期の重なる日を出す(シフト・配送・点検)

LCM関数がいちばん活躍するのが、周期の違う予定が重なる日の計算です。シフト・定期配送・設備点検など、「◯日おき」で回る業務ならそのまま使えます。

何日おきに重なるか(6日・8日 → 24日)

次のような表を用意します。A列に業務名、B列に周期(日数)を入れておきましょう。

 AB
1業務周期(日)
2Aさんの出勤6
3定期配送8
4設備点検10

出勤と配送が重なる間隔は、2つの周期の最小公倍数です。

=LCM(B2, B3)

結果は「24」。6日おきと8日おきの予定は、24日ごとに重なります。

3つの業務すべてが重なる間隔なら、範囲でまとめて指定できます。=LCM(B2:B4) の結果は「120」なので、3つそろうのは120日に1回です。周期を1つ足すだけで間隔がぐんと伸びるのも、最小公倍数ならではの特徴ですね。

=基準日+LCM(…) で具体的な日付まで出す

「24日ごと」とわかっても、実際のカレンダーの日付がほしいですよね。そんなときは、予定が重なった日(基準日)にLCMの結果を足します。

E1に基準日「2026/11/02」を入れておき、次の数式を書きます。

=E1+LCM(B2, B3)
数式意味結果
=E1+LCM(B2, B3)出勤と配送が次に重なる日2026/11/26
=E1+LCM(B2, B3)*2その次に重なる日2026/12/20
=E1+LCM(B2:B4)3つの業務が次にそろう日2027/03/02

基準日には、すべての予定が同じ日に実施された日を選ぶのがポイント。重なっていない日を基準にすると、出てくる日付もずれてしまいます。

基準日のセルが日付形式なら、足し算の結果も日付として表示されます。もし「46352」のような5桁の数字で表示されたら、セルの表示形式が日付になっていません。メニューの[表示形式]→[数字]→[日付]を選ぶと、日付で表示されます。

その日が重なる日かを判定する(MOD関数)

日付の一覧を作っていて、「この日は重なる日?」を判定したい場面もあります。基準日からの経過日数が最小公倍数で割り切れるかを、MOD関数で調べましょう。

=MOD(A2-$E$1, LCM(6, 8))=0

A2の日付から基準日を引くと、経過日数が出ます。その日数を24で割った余りが0ならTRUE、0でなければFALSEという仕組みです。

日付(A列)基準日からの日数判定
2026/11/1412FALSE
2026/11/2624TRUE
2026/12/0836FALSE
2026/12/2048TRUE

TRUEの行に条件付き書式で色をつければ、重なる日がひと目でわかる予定表になります。

LCM関数で分数の通分とまとめ買い数量を出す

LCM関数は日付以外にも、「数をそろえる」場面で役立ちます。ここでは、分数の通分と、入り数の違う品のまとめ買いを見ていきましょう。

通分の分母をそろえる(1/4 と 1/6)

1/4 と 1/6 を足すには、分母をそろえる(通分する)必要があります。そろえる分母は、4と6の最小公倍数です。

 ABC
1分子分母通分後の分子
2143
3162

E1に =LCM(B2:B3) と入れると、共通の分母「12」が出ます。C2には次の数式を入れて、C3までコピーしてください。

=A2*$E$1/B2

1/4 は 3/12、1/6 は 2/12 になります。分子を足すと3 + 2 = 5なので、答えは 5/12 です。

入り数の違う品を同数にそろえる(LCM÷入り数で箱数)

「ボルトは12本入り、ナットは8本入り。同じ数だけ、余らせずに買いたい」という場面を考えてみます。そろえる本数は、入り数の最小公倍数です。

 ABCD
1品名入り数必要箱数合計本数
2ボルト12224
3ナット8324

F1に =LCM(B2:B3) と入れると「24」。C2には、LCMの結果を入り数で割る数式を入れます。

=QUOTIENT($F$1, B2)

QUOTIENT関数は、割り算の整数部分だけを返す関数です。LCMは入り数で必ず割り切れるので、=$F$1/B2 でも同じ結果になります。D2の合計本数は =B2*C2 で求めましょう。

ボルト2箱とナット3箱で、どちらも24本ずつそろいます。

ただし、品目を増やすと数量が一気に膨らむので注意してください。10枚入りのワッシャーを足すと、=LCM(12, 8, 10) は120です。ボルト10箱・ナット15箱・ワッシャー12箱と、箱数も大きく増えます。購入前に、LCMの結果が現実的な量かを確かめておくと安心ですね。

LCM関数の範囲指定・複数組をまとめて計算する

LCM関数の引数には、セル範囲も指定できます。ただし範囲を渡すと、結果は「行ごと」ではなく「範囲全体で1つ」になります。

LCM(A2:A5) は範囲全体で1つの値を返す

A2〜A5に「4」「6」「8」「12」が入っているとします。

=LCM(A2:A5)

4つの数すべてで割り切れる最小の数は24なので、結果は「24」の1つです(4行分が行ごとに返ることはありません)。

公式ヘルプの使用例には LCM(2, 3, A4) のように、数字とセルを混ぜた書き方も載っています。同じ考え方なら、範囲と数字を組み合わせた =LCM(A2:A5, 5) は120になります。

範囲に空白セルや文字、TRUE/FALSEが混ざったときの扱いは、公式ヘルプに記載がありません。実機で試したところ、4・空白・6 や 4・"abc"・6 の範囲はエラーにならず、空白や文字のセルは無視されて結果は12でした。ただし、数式に直接 "abc" と書くと #VALUE! になります。見落としを防ぐため、数値だけが入った範囲を指定するのが確実です。

行ごとに最小公倍数を出したいとき

「1行に2つの数があり、行ごとに最小公倍数を出したい」というケースもありますよね。確実なのは、1行目に数式を書いて下の行へコピーする方法です。

 ABC
1値1値2最小公倍数
212824
36918
4101530
57535

C2に次の数式を入れ、C5までフィルハンドルでコピーします。

=LCM(A2, B2)

1つの数式で全行の結果を返したい場合は、MAP関数とLAMBDA関数を組み合わせる方法が候補です。LCMは範囲を渡すと1つの値にまとめるため、=ARRAYFORMULA(LCM(A2:A5, B2:B5)) のように包んでも行ごとにはならず、8つの数すべての最小公倍数(この表では2520)が1つ返るだけです。

=MAP(A2:A5, B2:B5, LAMBDA(a, b, LCM(a, b)))

C2に入れると、C2:C5に24・18・30・35が並びます。

小数・負の数・0 を渡すときの注意とエラーの対処

LCM関数は「1以上の整数」を前提にした関数です。小数や負の数が入りうる表では、渡す前に値を整えておくと失敗を防げます。

公式ヘルプで確認できる挙動・できない挙動

スプレッドシートの公式ヘルプに書かれている内容と、書かれていない内容を分けて整理しました。

ケース公式ヘルプの記載実務での対処
小数(4.9 など)小数部はすべて自動的に切り捨て四捨五入したいならROUNDで丸めてから渡す
負の数記載なし(実機では #NUM!)ABSで正の値にそろえてから渡す
0記載なし(実機では結果が0)0や空欄の行はIFで計算から外す
範囲内の空白・文字記載なし(実機では無視される)数値だけの範囲を指定する

公式の説明どおり切り捨てられ、=LCM(4.9, 6.3) は =LCM(4, 6) と同じ扱いで、結果は12になります。4.9を5として扱いたいなら、ROUND関数で丸めてから渡しましょう。

=LCM(ROUND(A2), ROUND(B2))

A2が4.9、B2が6.3なら、5と6の最小公倍数で30になります。

1未満の小数は切り捨てで0になるため、=LCM(0.5, 2) の結果は0です。エラーにならず0が返るので、見落とさないようにしましょう。

負の数や0を渡したときの結果は、スプレッドシートの公式ヘルプに記載がありません。実機で試すと、=LCM(-4, 6) は #NUM! になり、=LCM(5, 0) は0を返しました。負の数が混ざりうる列は、ABS関数で絶対値にしてから渡すのが無難です。

=IF(OR(A2=0, B2=0), "", LCM(ABS(A2), ABS(B2)))

この数式なら、0や空欄の行は空白のまま、それ以外は正の値で最小公倍数を計算します。周期や入り数に0は本来入らないので、空白で返して入力漏れに気づけるようにしておくと安心です。

つまずきやすい症状と対処

LCM関数を使っていてよくある症状を、原因と対処の組み合わせでまとめます。

症状考えられる原因対処
日付のはずが5桁の数字で出る結果のセルが日付の表示形式になっていない[表示形式]→[数字]→[日付]を選ぶ
#NUM! や #VALUE! のエラーになる負の数が入っている(#NUM!)、数式に直接書いた文字が数値でない(#VALUE!)ABSで正の値にする・数値に直す
結果が0になる1未満の小数(0.5など)や0を渡しているROUNDやIFで値を整える
結果が大きすぎて使えない共通の約数がない数を多く重ねた組み合わせを見直す・品目を分けて計算する

結果が大きくなりすぎたときのエラーについて、Excelの公式ヘルプには「2^53以上で #NUM!」とあります。スプレッドシートでは、実機で =LCM(999999937, 999999929) を試してもエラーにならず、約1京の値が返りました。ただし2^53(約9.0×10^15)を超える値は正確に表せないため、末尾の桁がずれた近似値になります(この例の正しい値は999999866000004473)。極端に大きな数を扱うときは、結果を検算しておきましょう。

まとめ:スプレッドシートのLCM関数は「そろえる」計算に使う

スプレッドシートのLCM関数は、複数の数の最小公倍数を返す関数です。この記事のポイントを振り返ります。

  • 構文は =LCM(値1, [値2, ...])。数字・セル・範囲を指定できる
  • 周期の重なる間隔は =LCM(6, 8) で24日。=基準日+LCM(...) で日付まで出せる
  • 重なる日の判定は =MOD(日付-基準日, LCM(...))=0 で行える
  • 通分の分母や、まとめ買いの数量(LCM÷入り数で箱数)にも使える
  • 範囲を渡すと結果は1つにまとまる(ARRAYFORMULAでも同じ)。行ごとに出すなら数式を下へコピーするか、MAPとLAMBDAを使う
  • 小数は切り捨て(0.5は0)。負の数は #NUM!、0を含むと0になるので、ABSやIFで整えてから渡す

約分や共通の約数を求めたいときは、GCD関数のほうが向いています。まずは手元の表で =LCM(6, 8) を入れ、「24」が返るのを確かめてみてください。

タイトルとURLをコピーしました