PR
私が使っているPCガジェット類

作業環境で実際に使っている・気になっている周辺機器などをまとめました

※ 一部のリンクは広告(アフィリエイト)を含みます

Excelで見積書を作るなら知っておきたい関数と機能

エクセルで見積書を作るとき、どの関数を使えばいいのか迷ったことはありませんか?
単価をマスタから引く・明細を並べる・消費税を足す・余った行を始末する、やることは多いのに、どれも決定版が見つかりにくいところです

この記事は作り方の手順書ではありません
見積書という道具を組み立てるのに要る部品を、1節につき1部品ずつ並べた部品カタログです
詰まっている部品の節だけ拾い読みしてもらえる形にしてあります

使うのは関数とExcelの標準機能だけで、マクロなしで組みます
Power Queryもここでは使いません
マクロが使えない職場でも、渡した相手の環境で開けないと困る場面でも、この範囲なら扱えます

この記事の立ち位置

職場でよく作らされるExcelの道具を、マクロなし版とマクロ版の両方から組み立てるシリーズの1本目です
この記事はマクロなし版で、同じ見積書をマクロで自動化する版は別記事で扱う予定です

完成した見積書の印刷イメージ(宛先・見積番号・発行日・明細・小計/消費税/合計・以下余白まで入った1ページ全体)
ジャベ雄

頭から順に読まなくて大丈夫です
困っている部品の節だけ拾ってください

目次

見積書ツールの全体像 4つのシートで組み立てる

部品の話に入る前に、全体の形だけ先に共有させてください
ここが見えていないと、このあとの関数がどこに置かれるものなのか宙に浮いてしまいます

結論から言うと、見積書は印刷する1枚の紙として作らず、一覧(マスタ)と帳票を分けた4シート構成で組みます

スクロールできます
シート役割持たせる列
得意先マスタ宛先の一覧得意先コード / 会社名 / 部署 / 郵便番号 / 住所
商品マスタ商品と単価の一覧商品コード / 商品名 / 単位 / 単価 / 備考
明細一覧見積の中身をためる台帳見積番号 / 行番号 / 商品コード / 数量 / 税率 / 税抜金額
見積書印刷する帳票値はほぼ数式で引く

帳票のセルに直接打ち込む作り方だと、同じ得意先名と同じ商品名を発行のたびに打ち直すことになります
それに、去年出した見積を探そうとしても、ファイルを1つずつ開いて回るしかなくなります

一覧を先に持っておくと、この2つが同時に片づきます
データの流れは1方向で、明細は明細一覧シートに入力し、見積書シートは引いて並べるだけにします

手で打つ場所は2か所に分かれます
明細一覧に打つのが商品コードと数量(軽減税率の商品があるなら税率も)で、見積書シートに打つのは見積番号と得意先コードだけです

ブック下部のシートタブ4枚(得意先マスタ / 商品マスタ / 明細一覧 / 見積書)と、明細一覧シートの中身が見える状態

ここから先の節は、それぞれ独立した部品の話です
テーブル → XLOOKUP → FILTER → 表示形式 → 以下余白 → 入力規則、という順で並べていますが、必要なところだけ読んでも意味が通るようにしています

ジャベ雄

帳票に直接打ち込む作りは、去年の見積を探すときに困ります

一覧シートはテーブルにする(Ctrl + T)

マスタと明細一覧は、ただの範囲のままにせずテーブルにします
範囲を選んで Ctrl + T を押すだけで、あとは見出し行の有無を確認して終わりです

テーブルにする一番の理由は、行を足しても参照範囲が自動で伸びるからです
Microsoftの公式ドキュメントにも、テーブルの名前を使った参照(構造化参照)はテーブルへのデータ追加・削除に合わせて自動で調整されると書かれています

データが増える表への対処として、Microsoft自身が構造化参照を推奨している点も後押しになります
列全体を参照する書き方や動的な名前定義に比べて、処理の面でも不利が少ないという説明です

テーブル名の付け方と参照の書き方

テーブルにすると自動でテーブル1のような名前が付きます
このままでも動きますが、数式が読めなくなるので付け替えます

テーブル内のセルを選んで、リボンの「テーブルデザイン」タブ左端にある「テーブル名」を書き換えるだけです
Excel 2019以前は「テーブルツール」の中の「デザイン」タブになります

名前を商品マスタにしておくと、列の参照はこう書けます

商品マスタ[単価]

見積書シートのようにテーブルの外から参照するときは、テーブル名を省略できません
公式にも、テーブルの外で構造化参照を使うときは完全修飾の形にする必要があると書かれています

ちなみにテーブル名に C・c・R・r の1文字だけを付けることはできません
行や列を選ぶショートカットとして予約されているためです

計算列は勝手に下まで伸びる

テーブルの列に数式を1つ入れると計算列として扱われ、その列全体に同じ数式が入ります
行を足すとその行にも即座に伸びます
明細一覧の「税抜金額」列は、この計算列で作ってしまうのが楽です

=[@数量]*XLOOKUP([@商品コード], 商品マスタ[商品コード], 商品マスタ[単価])

行を足すたびに数式をコピーする手間が消えるので、明細をためる台帳とは相性がいい機能です
4つ目の引数を付けて0を返させると、コードの打ち間違いやマスタ未登録が単価0円のまま通ってしまうので、台帳側ではあえて付けずに #N/A を出させています

この式は単価をマスタから生で引いているので、マスタ側で単価を改定すると、去年出した見積の金額と消費税額まで変わります
発行時の単価を履歴として残したいなら、明細一覧に単価の列を持たせて、発行のタイミングで値に置き換える作りにしてください

「テーブルにしたのに自動で伸びない」ときは、オートコレクトのオプションを見てください
テーブルに新しい行と列を含めるテーブルに数式を入力して計算列を作成する の2つで、この挙動が制御されています

「テーブルは行数が増えると重くなる」という話を聞いたことがあるかもしれません
これは Excel 2013 以前の話で、Microsoftの資料では Excel 2016 で解消したとされています(同じ操作が約1.9秒から2ミリ秒ほどまで縮んだという記録です)

商品マスタをCtrl + Tでテーブル化した直後の画面、テーブルデザインタブの「テーブル名」欄に商品マスタと入力しているところ
ジャベ雄

Ctrl + Tを押すだけの作業ですが、ここを飛ばすと後がずっと面倒になります

マスタから引くのはXLOOKUP1本で足りる

商品コードから商品名や単価を引く部分は、XLOOKUPだけで足ります
見積書の解説記事は今もVLOOKUPで書かれているものが多いのですが、列番号を数える作業も、左方向に引けない制約も、XLOOKUPには無いので置き換えるだけの価値があります

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

必須は最初の3つだけです
見積書シートのC12に明細一覧から引いた商品コードが並んでいるとして、商品名はこう書きます

=XLOOKUP($C12, 商品マスタ[商品コード], 商品マスタ[商品名], "")

4つ目の [見つからない場合] に空文字(半角のダブルクォート2つ)を入れておくと、コードが未入力の行でエラー表示になりません
この引数があるのがXLOOKUPの大きな利点で、次の話につながります

見積書シートの明細行(商品コードが引けている行)を選び、数式バーにXLOOKUPの数式が見え、右側に商品名・単位・単価が引けている状態

使えるバージョンに注意(2016と2019では使えない)

先に対応バージョンを押さえておきます
ここを間違えると配布先で全滅します

XLOOKUPはExcel 2016 と Excel 2019 では使えません
使えるのは Microsoft 365 と Excel 2021 以降(2024を含む)です
Microsoftの公式ページの本文に、2016と2019では利用できないという一文がはっきり書かれています

ネット上には「XLOOKUPは2019以降」と書いている解説も見かけますが、公式の記述と食い違います
買い切り版のExcel 2021に入った新関数のひとつなので、2019以前の環境が混じるならVLOOKUPINDEX+MATCHで代替する前提で設計してください、詳しい時系列は Excel 2021の新機能と新関数まとめ に整理してあります

IFERRORで包む必要はない(包むとかえって危ない)

VLOOKUP時代の癖で、つい IFERROR で全体を包みたくなるところです
XLOOKUPを使うなら、この包み方はむしろ避けたほうが安全です

理由は捕まえる範囲の広さにあります
IFERRORは #N/A・#VALUE!・#REF!・#DIV/0!・#NUM!・#NAME?・#NULL! の7種類すべてを拾って、指定した値に置き換えます

一方でXLOOKUPの第4引数は、公式の定義が有効な一致が見つからない場合に限定されています
つまり「コードが未入力・マスタに無い」という想定内の空振りだけを、この引数で埋められるわけです

スクロールできます
書き方拾う範囲起きること
XLOOKUPの第4引数一致が見つからないとき想定内の空振りだけ空欄になる
IFERRORで包む7種類のエラー全部参照が壊れた#REF!や型違いの#VALUE!まで空欄になる

マスタの列を1本削って参照が壊れても、包んでいると画面上は空欄のままです
単価が0円のまま印刷された見積書が出ていく事故は、こういう握りつぶし方から生まれます

IFERRORの出番は、XLOOKUPが無い環境でVLOOKUPの#N/Aを隠すときと、XLOOKUPでは吸えないエラーを承知のうえで処理したいときに絞るのが原則です

空欄のセルを引いたときの落とし穴

もう1つ、引いた先が空欄だったときの話です
XLOOKUPは参照先のセルが空だと、空ではなく0を返すという挙動が知られています

見積書だと、備考が空欄の商品を引いたときに備考欄へ0と印字される、という形で出てきます
気になる場合は、引いた結果が空文字かどうかを見てから出し分ける書き方で回避できます

=LET(x, XLOOKUP($C12, 商品マスタ[商品コード], 商品マスタ[備考], ""), IF(x="", "", x))

この0が返る挙動は解説サイトで広く紹介されているものの、私はまだ手元で確かめていません
備考のように空欄が入りうる列を引くときだけ、自分のExcelで一度動きを見てから採用してもらえればと思います

ジャベ雄

列番号を数える作業から解放されるだけでも、XLOOKUPに乗り換える価値はあります

明細が複数行あるときの取り出し方

XLOOKUPが得意なのは1件を引くところまでです
明細一覧から「この見積番号の行だけ」をまとめて取り出すなら、FILTERのほうが素直に書けます

=FILTER(明細一覧[商品コード], 明細一覧[見積番号]=$D$3, "")

D3に見積番号を入れておけば、そこに紐づく商品コードが必要な行数ぶんだけ下へこぼれてきます
結果が下や右へ自動で広がるこの動きはスピル(動的配列)と呼ばれるもので、Microsoft 365 と Excel 2021 以降の計算エンジンの土台になっています

数量も同じ形の式を、数量の列に1本置きます
商品名・単位・単価は、こぼれてきた商品コードをひとつ前の節のXLOOKUPで引けば埋まります

取り出す列は 明細一覧[[商品コード]:[数量]] のようにまとめて渡すこともできますが、その場合は2列が隣り合ったままスピルします
明細の並びが 商品コード → 商品名 → 単位 → 単価 → 数量 になっている帳票には収まらないので、列ごとに1本ずつ置く形が扱いやすいです

FILTERの3つ目の引数[空の場合]は省略しないのが原則です
省略した状態で条件に合う行が1件も無いと #CALC! エラーが表示されます
空文字(半角のダブルクォート2つ)を入れておけば静かに空欄になります

もう1つ、2つ目の引数にエラー値が混じっているとFILTER自体がエラーを返します
条件に使う列にXLOOKUPの結果を挟んでいるなら、そちらで#N/Aが出ていないかを先に確認してください

FILTERの対応バージョンにも触れておきます
公式の対応表に並んでいるのは Microsoft 365・Excel 2024・Excel 2021 で、2019以前は挙がっていません
XLOOKUPのように「2016と2019では使えない」と本文に明記されているわけではないので、断定はしませんが、実務では2021以降で使う関数と考えておくのが無難です

複合キーは&でつなぐのが基本

明細の枠を罫線でかっちり作ってある帳票だと、FILTERのスピルが枠と噛み合わないことがあります
その場合は明細を1行ずつ引く形にしますが、見積番号だけでは行が特定できないので、見積番号と行番号を足したキーを作ります

明細一覧に計算列を1本足すだけです

=[@見積番号] & "-" & [@行番号]

見積書側は、同じ形のキーを組み立てて引きます

=XLOOKUP($D$3 & "-" & $B12, 明細一覧[キー], 明細一覧[商品コード], "")

要素が2つなら & でつなぐだけで十分です
2019以前の環境なら、同じキーをVLOOKUPで引く形に置き換えられます
作業列を作らずに検索範囲側で連結してしまう書き方も紹介されていますが、私は手元で確かめていないので、まずはキー列を1本持つ形をおすすめします

TEXTJOINを使うのは、要素が3つ以上になるときや、空欄が混じる列をまとめたいときです
区切り記号を1回書けば全体に適用されるのと、空セルを飛ばせるのがこの関数の持ち味になります
対応は買い切り版だと Excel 2019 以降で、結果が32,767文字を超えると #VALUE! が返ります

📚 VBAの独学に効く本PR
Excel VBA塾【動画×本で学ぶ!】

Excel VBA塾【動画×本で学ぶ!】

たてばやし淳

Excel マクロ&VBA[実践ビジネス入門講座]完全版 第3版

Excel マクロ&VBA[実践ビジネス入門講座]完全版 第3版

国本温子

増強改訂版 できる イラストで学ぶ 入社1年目からのExcel VBA

増強改訂版 できる イラストで学ぶ 入社1年目からのExcel VBA

きたみあきこ

私のおすすめからランダムで3冊を表示しています

金額の見た目は表示形式で決める

桁区切り・マイナスの見せ方・ゼロを消すかどうか、この手の見た目は数式ではなく表示形式で決めます
セルを選んで Ctrl + 1 でセルの書式設定を開き、分類の「ユーザー定義」に書式コードを入れる場所です

ここを知らないと、値引き行を赤くするだけのためにIF関数を重ねる、といった遠回りをすることになります

書式コードは最大4セクション

書式コードはセミコロンで区切った最大4つのセクションでできています
Microsoftの表示形式のカスタマイズに関するガイドラインにも、正の値・負の値・ゼロの値・テキストという順で定義すると書かれています

位置1つ目2つ目3つ目4つ目
適用先正の数負の数ゼロ文字列

ここで一番つまずくのが、全部書かなかったときの挙動です
セクションを1つだけ書くとすべての数値にその書式が使われ、2つ書くと1つ目が正の数とゼロに、2つ目が負の数に使われます

たとえば値引き行を赤い▲で出したくて、こう書いたとします

#,##0;[赤]"▲"#,##0

これは2セクションなので、ゼロは消えません
1つ目のセクションが正の数とゼロの両方に使われるため、空の明細行には0がそのまま並びます

ゼロを消したいなら、3つ目のセクションを空にしたコードを書きます
公式が示している形に桁区切りを足すと、金額欄に当てる書式はこうなります

#,##0;-#,##0;;@

3つ目が空のセミコロンだけになっている点がポイントです
途中のセクションを飛ばして後ろだけ書きたいときも、飛ばすセクションの終わりのセミコロンは残す決まりになっています

書式コードに書ける色は黒・青・水・緑・紫・赤・白・黄の8色だけで、社内の指定カラーのような任意の色は入れられません
▲のような文字を混ぜるときは、上の例のように二重引用符で囲みます

マイナスを▲や△で表すのは、日本の実務で広く使われている慣行です
私が確認した範囲では、記号を定めた法令上の決まりは見当たりませんでした
経団連が公開している会社法関係の書類ひな型では、貸倒引当金や自己株式に△が使われています(黒い▲ではなく白い△です)

セルの書式設定ダイアログの「表示形式」タブ、分類でユーザー定義を選び、種類の入力欄に桁区切りとゼロ非表示の書式コードを入れた状態
ジャベ雄

見た目の調整を数式でやろうとすると、式がどんどん長くなります

帳票では条件付き書式に頼らない

色分けの話が出たので、立場も書いておきます
この手の記事はたいてい条件付き書式を勧めますが、私は配りまわす帳票では控えるほうです

コピーや書式のコピーをするたびに、コピー先へ新しいルールが作られる仕組みだからです
先月のシートをコピーして今月分にする、という見積書の使われ方とは、けっこう噛み合いません

その点、表示形式ならコピーしても書式が移るだけで、ルールとして積み上がりません
増えたルールの掃除のしかたや、それでも条件付き書式のほうが勝つ場面は別記事にまとめました

余った明細行の始末(以下余白の出し方)

明細の枠を20行用意して、実際の明細が5行だったとき、残りの15行をどう見せるかという話です
ここは解説であまり見かけない部分ですが、実際に作ってみると出てくる部品です

放っておくと、空の行に0が並んだ見積書が印刷されます
数式は入っているので、見た目が空でも中身は空ではない、というのが原因です

まずゼロを消す

ひとつ前の節で出てきた、3つ目のセクションを空にした書式コードをそのまま使います
金額欄と数量欄に当てておけば、値が0の行は画面からも印刷からも消えます

公式にも、この方法で非表示にした値は数式バーやセルの編集中だけ見えるようになり、印刷はされないと書かれています

無償提供やサービス品を0円と印字したい行があるなら、その欄にはこの書式を当てないでください
0を消す書式なので、0円と見せたい行まで金額欄が空欄で印刷されます

数式側で対処するなら、XLOOKUPの第4引数とFILTERの第3引数に空文字を入れておく手もあります
ただし確実なのは表示形式のほうです

数式側の空文字が通用するのは、引いてきた値をそのまま表示している欄だけになります
金額欄のように 数量×単価 で計算している欄だと、空文字を掛けた時点で #VALUE! か 0 が出るので、ゼロは消えません

最終行の下に「以下余白」を出す

空白のまま余らせず以下余白と入れておくのは、改ざん防止のために余白を潰す商慣習だと説明されています
斜線を引いたり止め印を押したりする形で代える職場もあります

これも関数で出せます
行番号が明細の件数+1になる行だけ文字を表示させる形です

=IF($B12=COUNTIF(明細一覧[見積番号], $D$3)+1, "以下余白", "")

B12は明細の行番号、D3は見積番号のセルです
COUNTIFでその見積番号の明細が何行あるかを数えて、その次の行にだけ文字を出しています
明細が増えても減っても、文字の位置が自動でついてきます

置き場所は商品名の列です
その列にはすでにXLOOKUPが入っているので、別のセルに足すのではなく、条件から外れたときの値としてXLOOKUPを畳み込みます

=IF($B12=COUNTIF(明細一覧[見積番号], $D$3)+1, "以下余白", XLOOKUP($C12, 商品マスタ[商品コード], 商品マスタ[商品名], ""))

残りの空行の罫線をどうするかは好みが分かれるところです
「明細のある行だけ罫線を引きたい」と考えると条件付き書式に手が伸びますが、私がそこで一度立ち止まる理由は、ひとつ前の節に書いたとおりです

明細5行+以下余白の1行が出ている見積書の明細部分、余った行に0が並んでいない状態

入力しやすく壊れにくくする設定

ここまでで計算は組み上がるので、最後は人が触る部分を固めます
入力規則・日付の自動化・シート保護・印刷、この4つで手戻りがかなり減ります

入力規則でコードを選ばせる

コードは手打ちさせず、ドロップダウンから選ばせます
当てる先は明細一覧シートの商品コード列と、見積書シートの得意先コード欄です

Microsoftのパフォーマンスに関するドキュメントは、計算が遅くなる要因として、条件付き書式と並べて入力規則の名前も挙げています
ただし遅くなるのは大量に使ったときの話で、見積書で入力規則を当てるのはコードの列など数か所なので、ここでは問題になりません

データタブの「データの入力規則」を開いて、入力値の種類をリストにするところまでは普通の手順です
つまずくのはその次で、元の値にテーブルの構造化参照をそのまま書くと通らないという話が定番になっています

Microsoftの公式ドキュメントに明文は見つけられませんでしたが、Q&Aの回答と解説サイトの説明は一致しているので、名前定義かINDIRECTを経由する回避策を採るのが安全です

STEP
列に名前を付ける

数式タブの「名前の定義」で、名前を商品コード一覧、参照範囲をテーブルの列(商品マスタの商品コード列)にします

STEP
入力規則から名前を呼ぶ

データの入力規則の「元の値」に、イコールに続けて付けた名前を書きます
これでテーブルに行を足したときもドロップダウンが伸びます

名前を作らずに済ませたいなら、元の値にINDIRECTを書いて文字列から解決させる手もあります

=INDIRECT("商品マスタ[商品コード]")

テーブルの列をマウスでドラッグして範囲指定する方法も紹介されていますが、テーブルが伸びたときに範囲がついてくるかは私の手元で確かめていません
確実に動かしたいなら、名前定義かINDIRECTを選んでおくのが安全です

「分類を選ぶと商品が絞り込まれる」ような多段のドロップダウンにしたくなったら、そこは作り方が何通りもあるので選んだ分類で商品を絞り込む作り方にまとめてあります

明細一覧シートの商品コード列でドロップダウンが開き、商品マスタの一覧が候補として出ている状態

日付は自動と手動を使い分ける

発行日を TODAY で自動にするのは定番ですが、見積書では注意が要ります
TODAYはブックを開くたびに再計算されるので、先月発行した見積書を開き直すと日付が今日に化けます

作りかけのうちはTODAYで置いておいて、発行のタイミングでコピーして値だけ貼り付ける、というのが現実的な運用です
有効期限は発行日から起算して出せます

=EDATE($D$5, 1)

D5の発行日から1か月後を返します
月末に揃えたいなら EOMONTH に置き換えてください
どちらもシリアル値(内部的な連番)が返るので、表示の形は前の節の表示形式で整えます

シート保護と印刷まわり

数式が入ったセルを他人に触られると、たいてい壊れます
入力してほしいセルだけロックを外してから、校閲タブの「シートの保護」をかけると、それ以外が編集できなくなります

  • 見積書シートの入力セル(見積番号・得意先コード)を選んで、セルの書式設定からロックのチェックを外す
  • 校閲タブのシートの保護をかける、パスワードは空でも構わない
  • 明細一覧シートにも保護をかけるなら、商品コード・数量・税率の列はロックを外しておく
  • ページレイアウトタブで印刷範囲を設定する
  • ページ設定の拡大縮小印刷で、横1ページに収まるよう指定する

この保護はうっかり数式を消す事故を防ぐためのもので、中身を守るセキュリティ機能ではありません
解除の手順は広く知られているので、見られて困る情報を隠す用途には使わないでください

明細が2ページに渡る可能性があるなら、印刷タイトルで見出し行を各ページに繰り返す設定も入れておくと読みやすくなります

注文書・納品書・請求書への転用

ここまで組んだ仕組みは、見出しと項目を差し替えるだけで他の帳票にも回せます
一覧から必要な行を引いて並べる、という骨格は同じだからです

スクロールできます
帳票差し替える日付足りない項目
注文書発注日 / 納期宛先が仕入先に変わる
納品書納品日金額を伏せた版を作ることもある
請求書請求日 / 支払期限振込先・登録番号・税率ごとの区分

問題は消費税です
ここだけは作りを間違えると、そのまま転用したときに困ります

端数処理は税率ごとに1回だけ

国税庁のQ&A(問57・PDF)は、適格請求書に書く消費税額に1円未満の端数が出るとき、税率ごとに1回だけ端数処理をするよう求めています
個々の商品ごとに端数処理して、その合計額を消費税額として記載する形は認められない、とも注記されています

なので明細の行では丸めません
明細一覧に税率の列を持たせておいて、税率ごとに集計してから外側で1回だけ丸める、という形にします

=ROUNDDOWN(SUMIFS(明細一覧[税抜金額], 明細一覧[見積番号], $D$3, 明細一覧[税率], 0.1) * 0.1, 0)

10%対象の税抜金額をSUMIFSで集めて、税率を掛けたところに ROUNDDOWN が1回だけ入る形です
8%対象があるなら、条件と掛ける率を差し替えた同じ式をもう1本並べます

ずれる額の実例・切り上げと四捨五入の選び方・明細を税込で持っているときの割り戻しは、こちらにまとめました

税額の扱いは取引の形によって変わるので、自社の運用に落とすときは顧問税理士や所轄の税務署に確認してもらうのが確実です

まとめ エクセルの見積書に必要な関数と機能

部品を一度並べ直しておきます
それぞれ独立して使えるので、詰まったところに戻ってきてもらえればと思います

スクロールできます
部品使う場面対応バージョン
テーブル(Ctrl + T)マスタと明細一覧を伸びる表にする2007以降
XLOOKUPコードから商品名・単価を引くMicrosoft 365 / 2021以降
FILTER該当する明細をまとめて取り出すMicrosoft 365 / 2021以降
表示形式桁区切り・▲・ゼロ非表示・色分けどの版でも
COUNTIF + IF以下余白を最終行の下に出すどの版でも
入力規則コードをドロップダウンで選ばせるどの版でも
SUMIFS + ROUNDDOWN税率ごとに1回だけ端数処理する2007以降

押さえどころを3つに絞るなら、この3つです

  • 一覧はテーブルにして、引くのはXLOOKUP、IFERRORで包まない
  • 見た目は表示形式で決める、ゼロ非表示は3つ目のセクションを空にする
  • 消費税は明細行ごとに丸めず、税率ごとに1回だけ端数処理する

ここまで関数と標準機能だけで組んできましたが、発行のたびに明細を打ち直す・番号を手で振る・PDFにして保存する、この辺りは関数では届かない領域です
同じ見積書をマクロで自動化する版は別記事で扱う予定なので、手作業をボタン1つにしたい方はそちらを待ってもらえればと思います

完成品のサンプルファイルも別途用意します
まずは自分のブックで、詰まっている部品から手を付けてみてください

📚 VBAの独学に効く本PR
Excel VBA塾【動画×本で学ぶ!】

Excel VBA塾【動画×本で学ぶ!】

たてばやし淳

Excel マクロ&VBA[実践ビジネス入門講座]完全版 第3版

Excel マクロ&VBA[実践ビジネス入門講座]完全版 第3版

国本温子

増強改訂版 できる イラストで学ぶ 入社1年目からのExcel VBA

増強改訂版 できる イラストで学ぶ 入社1年目からのExcel VBA

きたみあきこ

私のおすすめからランダムで3冊を表示しています


最後に・・・

クラウドワークスココナラでお仕事受け付けています!

PythonとExcelを中心に仕事に役立つ業務ツールや自動化、スクレイピングツールの作成を受注していて、クラウドワークスでは気が付けば100件以上のお仕事を受注してきました!

会社員をやりながらの副業なので時間の捻出は相応ですが、クライアントの方々と近い立場でこちらからも提案しながら活動していますのでお悩みあれば是非ご相談ください

ココナラのプロフィールページへ

"ココナラ"に新規登録する際は1,000Pもらえる紹介コード使ってください

78E62K

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAとPythonを中心にユーザー側でできるITを自己学習しているので備忘録半分、学習履歴を残して同じ道を辿る人の参考になればとブログを始めました

副業でスクレイピングツール作成を中心にできることを色々やっていますのでご相談いただけるとありがたいです!


クラウドワークスのページへ


ココナラのページへ

コメント

コメントする

目次