個人クリエイターの売上・在庫管理

材料の単価を仕入先ごとに比べる|最後に買った単価と、いちばん安かった仕入先を式で出す

公開日: 2026-11-11

同じ金具でも、ネットでまとめて買うか、店頭で少しだけ買うかで1個あたりの値段が大きく変わります。急ぎで店頭で買ったら、ネットの1.5倍だった、ということは珍しくありません。

この記事では、仕入の記録から1回ごとの単価(送料込み)を出し、材料ごとに「最後に買ったときの単価」と「いちばん安かった単価・仕入先」を式で出します。どこで買うと安いかが、記録を書くだけで見えるようになります。

単価は送料込みで出す

仕入の表には、材料の金額と送料を分けて書きます。1回の注文で複数の材料を買ったときは、送料をどれか1行にだけ書きます(2行に書くと送料が2回数えられます)。

H2(単価・送料込み): =IF(OR($E2="",N($D2)<=0),"",(N($E2)+N($F2))/$D2)

仕入の表。ピアス金具 ネットショップA 50ペア 2,400円 送料370円 単価55.4円、丸カン 1,000個 650円 0.65円、チェコビーズ ネットショップB 300個 3,300円 送料520円 12.7円、UVレジン液 駅前店 3本 2,970円 990円、ピアス金具 駅前店 10ペア 880円 88円(急ぎで店頭)、OPP袋 100円ショップ 200枚 110円、チェコビーズ ネットショップA 100個 1,350円 13.5円

この例のピアス金具は、ネットショップAで50ペアまとめて買うと送料込みで1ペア 55.4円、急ぎで駅前の手芸店で10ペア買うと 88円 でした。送料を1行(ピアス金具)にまとめて書いたので、同じ注文の丸カンの単価には送料が入っていません。そのため、この書き方の送料込みの単価は、送料を書いた行だけ高めに出ます。材料どうしで単価を公平に比べたいときは、送料を材料の金額の割合で分けて、行ごとに書きます(例: 2,400円と650円の注文で送料370円なら、291円と79円)。

最後に買ったときの単価

材料ごとに、仕入の表のいちばん下(最後)の行の単価を取り出します。

N2: =IF(COUNTIF(仕入!$B$2:$B$2001,$A2)=0,"",LOOKUP(2,1/(仕入!$B$2:$B$2001=$A2),仕入!$H$2:$H$2001))

外側の IF は、まだ一度も仕入れていない材料を空にするためです(無いと #N/A になります)。仕入!B=A2 が当てはまる行は 1/TRUE = 1、当てはまらない行は 1/FALSE でエラーになります。LOOKUP は、探す値(2)より大きい値が無いとき、エラーを飛ばして最後の 1 の位置を返すので、いちばん下の当てはまる行の単価が出ます。古い Excel でも、配列数式として入力しなくても動く書き方です。

いちばん安かった単価と、その仕入先

Excel 2019 以降・Microsoft 365・Google スプレッドシート・LibreOffice なら、MINIFS で書けます。

O2: =IF(N2="","",MINIFS(仕入!$H$2:$H$2001,仕入!$B$2:$B$2001,$A2))

Excel 2016 以前でも動くようにするには、当てはまらない行をとても大きな数に置き換えて SMALL で最小を取ります。

O2: =IF(N2="","",SUMPRODUCT(SMALL((仕入!$B$2:$B$2001=$A2)*仕入!$I$2:$I$2001+(仕入!$B$2:$B$2001<>$A2)*1E+99,1)))

(I 列は、単価が数のときは単価、空のときは 1E+99 にする計算用の列です。空の単価が 0 として最小に選ばれるのを防ぎます。どちらの式も、仕入の記録が無い材料は N2="" で空にします。MINIFS は当てはまる行が無いと 0 を返すためです)

安かった仕入先は、「材料が同じ」かつ「単価がいちばん安い単価と同じ」行を INDEX/MATCH で探します。

P2: =INDEX(仕入!$C$2:$C$2001,MATCH(1,INDEX((仕入!$B$2:$B$2001=$A2)*(仕入!$I$2:$I$2001=O2),0),0))

材料ごとの単価。ピアス金具 最新88円・最安55.4円 ネットショップA・在庫の額528円、チェコビーズ 13.5円・12.7円 ネットショップB・2,160円、丸カン 0.65円、UVレジン液 990円 駅前店、刺しゅう糸は仕入の記録が無く空、OPP袋 0.55円 100円ショップ・39円

この例では、ピアス金具は最後に買った単価(88円)が最安(55.4円)の1.6倍でした。チェコビーズは、お試しでネットショップAから買った 13.5円 より、ネットショップBの 12.7円 の方が安くなっています(画面の単価は小数1けたで表示しています)。同じ単価の行が2つあるときは、上(先に買った方)の仕入先が出ます。

「在庫の額」は 残り × 最後に買った単価 の目安です(OPP袋 70枚 × 0.55円 = 38.5円 → 39円)。材料の在庫にいくら置いているかの目安で、帳簿の金額とは別のものです。

仕入先ごとの合計

仕入先ごとに、買った回数・材料の金額・送料を SUMIFS・COUNTIFS で集めると、送料をどこで多く払っているかが見えます。「買った回数」は仕入の表の行の数なので、1回の注文で材料を2行に分けて書くと2回と数えます(この例のネットショップAの3回は、2回の注文の3行です)。

B2(買った回数): =COUNTIFS(仕入!$C$2:$C$2001,A2,仕入!$A$2:$A$2001,"<>")
C2(金額の合計): =SUMIFS(仕入!$E$2:$E$2001,仕入!$C$2:$C$2001,A2)
D2(送料の合計): =SUMIFS(仕入!$F$2:$F$2001,仕入!$C$2:$C$2001,A2)

仕入先別。手芸店 駅前店 2回 3,850円 送料0円、パーツのネットショップA 3回 4,400円 送料370円 合計4,770円、ネットショップB 1回 3,300円 520円 3,820円、100円ショップ 1回 110円

送料が無料になる金額が決まっているお店では、買い足す材料をまとめると送料が要らなくなることがあります。買い足す材料の一覧の作り方は、材料の在庫と買い足しの時期を式で出す記事で説明しています。単価がわかれば、作品1点の材料費もこの単価から出せます(原価の出し方の記事)。まだ買っていない店も含めて、買う前に候補の店を送料込みの1個あたりで比べる方法は、材料の仕入れ先を比べる記事で説明しています。

LibreOffice で式の区切りが ; の設定になっている場合は、, を ; に置き換えて入力します。

作った表を、そのまま使いたい方へ

この記事の表は、材料の在庫・買い物リスト・仕入先別をまとめたテンプレートで作りました。最後の単価・いちばん安い単価・安かった仕入先のほか、仕入先ごとに「送料無料まであと何円か」も出ます。表を一から作る時間を省きたい方は、ハンドメイド 材料・パーツの在庫と買い足し管理シートもご覧ください。

カテゴリ: 在庫・材料・委託