• 締切済み

エクセルを用いた仕入データと請求データの照合(マッチング)

エクセルでの仕入データと請求データの照合です。 シート1には仕入データ、シート2には請求データがあります。 各シートの様式は以下です。 A行から 日付ー注番ー品名ー数量ー単価ー金額ー税ー税込金額ーチェック となっています。 仕入データと請求データの注番と金額が合えばチェックの行にaを付けます。 以前投稿した際に =IF(SUMPRODUCT((Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2)),"a","") の式を頂きましたが、 例えばシート1に注番0001・金額1,000の行が1行あり シート2に注番0001金額・1,000の行が2行あった場合でもチェックの列にaが入力されてしまうのです。 *この場合だと仕入1,000円、請求2,000円で仕入=請求になりません。 このように一度照合したものに関しては同じ注番、同じ金額だとしてもチェックしないという条件の式をご回答頂きたくご質問させていただきました。 ご回答何卒宜しくお願い致します。

みんなの回答

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.7

>例えば「品名(C列)の左から8文字目までが合致した場合を含む」の条件をプラスしようとした場合は 下記のようになります。 =IF(B2="","",IF(SUMPRODUCT(($C$2:$C2=LEFT(C2,8))*($B$2:$B2=$B2)*($F$2:$F2=$F2))=1,IF(SUMPRODUCT(SUMPRODUCT((Sheet2!$C$2:$C$10000=LEFT(C2,8))*(Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2))),"a","該当なし"),"照合済み")) >ご回答頂いた式の頭ではシートの指定がなく、後半の真偽の式にはシートの指定がしてあります。 >なぜですか? 例えば、Sheet1で『=A1』と『=Sheet1!A1』を入力しても 返ってくる値は、同じになります。 数式が入力されているセルと同じシート内のセルを参照する場合は、 シート名が省略できます。 つまり、シート名の無いセル指定は、同じシート内を参照しています。 ご理解頂けましたでしょうか。

st_peco
質問者

お礼

これまでいろいろお世話になり本当に有難うございました。 数式の説明までして頂き今後の勉強に繋がると思います。 現在仕事で経理(買い)の業務を担当しており今後も「教えてgoo!」を利用することもあると思いますが何かしらでnobu555さんに引っ掛けて頂ければその時はまた宜しくお願いします。 有難うございました。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.6

>注番がI列、金額がJ列にあった場合はご回答頂いた論理式のBをI、FをJに変更するだけで宜しいのでしょうか? はい、そうです、 回答の数式は、注番がB列、金額がF列としてありますので、 仕様に合わて変更してください。

st_peco
質問者

お礼

了解しました。いろいろ試しにやってみます。 ご回答頂いた式に、例えば「品名(C列)の左から8文字目までが合致した場合を含む」の条件をプラスしようとした場合は =IF(B2="","",IF(SUMPRODUCT((LEFT($C$2:$C$10000,8))*($B$2:$B2=$B2)*($F$2:$F2=$F2))=1,IF(SUMPRODUCT((Sheet2!$C$2:$C$1000,8)*(Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2)),"a","該当なし"),"照合済み")) で宜しいのでしょうか? 更に、今式を考えながら感じたのですが ご回答頂いた式の頭ではシートの指定がなく、後半の真偽の式にはシートの指定がしてあります。 なぜですか?

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.5

>もしかしたらうまく伝わってないかもです。 いえいえ、こちらが勝手に複雑に考えていました。 以下の数式で、今度は大丈夫だと思います。 =IF(B2="","",IF(SUMPRODUCT(($B$2:$B2=$B2)*($F$2:$F2=$F2))=1,IF(SUMPRODUCT((Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2)),"a","該当なし"),"照合済み")) 判りやすく、コメントを増やしました。 数式の説明 B2="" で、注番が未入力の場合、空白とし SUMPRODUCT(($B$2:$B2=$B2)*($F$2:$F2=$F2))=1 で、注番と金額の組合せが、初めてチェックするものかを確認、 初めてなら、Sheet2と照合し、Sheet2と照合できたら"a"を、 照合できなかったら"該当なし"を、照合済みなら照合済みと表示します。 以上、如何でしょうか。

st_peco
質問者

お礼

おはようございます。ご回答有難うございました。 早速試してみました。 結果、仕入のaをチェックしたものと請求のaをチェックしたものの合計が一致しました。非常に感動してます。 注番がI列、金額がJ列にあった場合はご回答頂いた論理式のBをI、FをJに変更するだけで宜しいのでしょうか?

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.4

>お返事頂いた中で「片方だけしか付いてないがマーク数が同じになっているのでは?」とはどういうことですか? 例えば シート1 注番 金額 チェック 0001 1000  a 0002 1200 0003 1500  a 0003 1500 チェック済 シート2 注番 金額 チェック 0001 1000  a 0002 1200  a 0002 1200 チェック済 0003 1500 このような結果場合、チェックマークが両シート共2個ですが シート1では、0001と0003にあり、 シート2では、0001と0002にあり、 合計は、シート1が2500、シート2は2200となります。 実際に例題のデータで試されると判ると思います。

st_peco
質問者

お礼

もしかしたらうまく伝わってないかもです。 【シート1】 注番 金額 0001 1000 a(シート2の1行目と照合) 0002 2000 a(シート2の2行目と照合) 0003 300  (シート2の3行目と金額違いのため照合不可→空白) 0004 4000 a(シート2の5行目と照合) 0004 4000 (シート2の5行目と照合可だがシート1の4行目と照合したので照合不可→空白) 0001 5000 (シート2の7行目と注番違いのため照合不可→空白) 0006 6000 (シート2では注番、金額なしのため照合不可→空白) 【シート2】 注番 金額 0001 1000 a(シート1の1行目と照合) 0002 2000 a(シート1の2行目と照合) 0003 3500 (シート1の3行目と金額違いのため照合不可→空白) 0001 1000 (シート1の1行目と照合可だがシート2の1行目と照合済みのため照合不可→空白) 0004 4000 a(シート1の5行目と照合) という感じです。 エクセルを使ってますのでaをフィルタにかけるとシート1(7000)とシート2(7000)の合計が合致するといった具合です。 うまくお伝えすることができたでしょうか?

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.3

おそらく、シート1とシート2でチェックマーク"a"が 片方だけしか付いていないがマーク数が同じになっているのでは? 両方にマークの付いている金額だけを、合計すればよいのでは。 チェック欄がI列とするとシート1のJ列に下記を入力 =IF(I2="a",IF(VLOOKUP(B2,Sheet1!$B$2:$I$10000,8,0)="a",VLOOKUP(B2,Sheet1!$B$2:$I$10000,5,0),""),"") これで金額表示されますので、J列を合計すればよいかと。

st_peco
質問者

お礼

お返事有難うございます。 現在フィルタでaのついたものを抽出しSUBTOTALでシート1の合計とシート2合計を算出しているのです。 お返事頂いた中で「片方だけしか付いてないがマーク数が同じになっているのでは?」とはどういうことですか?

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

>数式を頭から説明 説明の前に、 数式に一部誤りがありましたので訂正します。 ×:IF(COUNTIF($B$2:B2,B2)=1,"","チェック済み")) ○:IF(B2=0,"","チェック済み")) では、順を追って説明します。 IF関数の書式は、IF(論理式,真の場合,偽の場合)ですので、 論理式は、COUNTIF($B$2:B2,B2)=1 真の場合は、,IF(SUMPRODUCT((Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2))=1,"a","") 偽の場合は、IF(COUNTIF($B$2:B2,B2)=0,"","チェック済み")) に、なります。 論理式から 論理式のCOUNTIF関数は、範囲($B$2:B2)に、検索条件(B2)に一致するセルの個数を返します。 『=1』が付いているのは、今回の質問で >一度照合したものに関しては...チェックしないという条件の式 の条件を満たすためです。 また、範囲の『$B$2:B2』で後ろのセルに『$』が無いのは、 コピーしたとき、先頭は固定で、終端は可変するようにです。 つまり、この行の注番が初めてチェックするのかを判断しています。 真の場合 またIF関数ですが、論理式だけ説明します。 論理式に、『=1』を追加しました。 質問中の数式では、有無しか判定しないので、 >シート1に注番0001・金額1,000の行が1行あり >シート2に注番0001金額・1,000の行が2行あった場合 このようなことになります。 複数存在する場合は、空白表示となります。 偽の場合 セルB2が未入力の場合、空白表示で それ以外は、最初の論理式ではじかれた複数個目となり、 『チェック済み』と表示します。 以上、数式の説明ですがご理解頂けましたでしょうか。 参考になれば幸いです。 アドバイス 注番が複数入力されることが、基本的に入力ミスとするのなら、 「入力規則」で制限することも出来ます。

st_peco
質問者

お礼

ご説明いただき有難うございます。 式のイメージはぼんやりと掴めた感じです。 ただ、せっかくご回答頂いた論理式でもシート1とシート2にaをチェックした合計金額が合致しませんでした。 私の説明不足でうまく状況を伝え切れてないことが原因だと思います。 何か良い方法はないでしょうか?

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

以下の数式で如何でしょうか。 =IF(COUNTIF($B$2:B2,B2)=1,IF(SUMPRODUCT((Sheet2!$B$2:$B$10000=$B2)*(Sheet2!$F$2:$F$10000=$F2))=1,"a",""),IF(COUNTIF($B$2:B2,B2)=1,"","チェック済み")) 一度照合したものに関しては、判りやすく「チェック済み」と表示します。 Sheet2に注番が複数有ったり、金額が違うものは、空白表示としました。

st_peco
質問者

お礼

早々にご回答いただき有難うございます。 早速試してみたのですが両シートのチェックした合計が合いません。 私、まだ勉強をし始めたばかりですのでもし宜しければご回答頂いた数式を頭から説明していただきたいのです。宜しくお願いします。

関連するQ&A

  • EXCELを使用したデータの照合

    仕入元帳と請求書の照合です。 SHEET1に仕入データ、SHEET2に請求データがあります。 (SHEET1) 科目…日付…注番…品名…数量…単価…金額…照合…税…税込金額 仕入…12…ああ…あか… 3…20…60…  …3…63 仕入…15…いい…あお… 2…10…20…  …1…21 仕入…18…うう…しろ… 1…20…20…  …1…21 (SHEET2) 科目…日付…注番…品名…数量…単価…金額…照合…税…税込金額 請求…12…ああ…あか… 3…20…60…  …3…63 請求…18…うう…しろ… 1…20…20…  …1…21 請求…15…いい…あお… 2…10…20…  …1…21 というように各SHEETには数千件のデータがランダムに表示されています。チェックポイント注番と金額で各SHEET同一の注番かつ金額があれば照合欄にaを、照合できないものは空白を表示させたいのです。 毎回データの量が違うため、マクロの記録を使えません。何か良い関数や、マクロがございましたらご教授お願い致します。

  • エクセルデータ照合

    エクセルのデータ照合によりデータの統合をしたいです。 Sheet1 A校 50% B校 30% C校 40% D校 30% E校 20% Sheet2 B校 C校 E校 F校 Sheet1 とSheet2 の学校を照合して共通校のみを抽出しSheet3として B校 30% C校 40% E校 20% データ数は約1万件です。 宜しくお願いいたします。

  • 2つのデータを照合したいです

    お客様から送られてくるエクセルの注文データと、自社で管理している注残データを照合し、お客様の注文データにあって自社注残データにないもの=新規注文データのみを別シートに抽出したいです。 これを行うにはマクロでいいのでしょうか? エクセルのシート1にユーザー注文データ。 シート2に自社注残データ。 この状態でマクロ実行→新たにシート3が作られ、照合できない新規注文データのみを抽出。 ということをイメージしています。 シート1(ユーザー注文データ)のI列に型式、F列に数量が入っています。 シート2(自社注残データ)のI列に型式、J列に数量が入っています。 この型式・数量の2項目を照合したいのですが、ユーザーデータには型式の頭に「P (Pと半角スペース)」が全数ついています。 このP+スペース以降の型式が照合対象です。 型式・数量が一致しないものを新たにシート3を作成しそちらに抽出したいです。 データ数は大体100行程度。 シート1・2共に1・2行には項目タイトルが入っているので、3行目からデータが始まります。 自分で作成しようとVBAの本を買ってきて勉強中なのですが、超初心者なので、まだまだ時間がかかりそうです。 どなたかお知恵を貸していただければと思います。 よろしくお願いいたします。

  • エクセルでデータ照合の仕方

    エクセルのデータ照合の仕方 仕事でデータの照合をしたいのですが・・・今現在紙ベースで合していて大変です。 こちらが把握している事務データと営業さんがあげるデータを照合したいのです。 A列商品名 B列数量 C列金額 D列合計金額(数式C*D)となります。 例えばこちらが A ビール B 10 C 300 D 3000 と打ち込みます。 営業さんも    A ビール B 10 C 300 D 3000 と打ち込むとデータが表示されないようにしたい。 こちらが     A ビール B 10 C 300 D 3000と打ち込み、 営業さんが   A ビール B 5 C 300 D 1500           A ビール B 5 C 300 D 1500           とこちらが1行営業さんが2行打ち込んでも品名があっていて合計金額もあっているのでデータが表示されないようにしたい。 こちらが     A ビール B 10 C 300 D 3000と打ち込み、 営業さんが   A ビール B 10 C 500 D 5000 と合計金額が違うのでこちらのデータも営業さんのデータを表示させたい。 間違い探しをしたいのです。 営業さんがこちらのデータ合わせて打ち込んでくれれば、一番良いのですが・・・そうもいかずに困っています。 こんな都合の良い照合の仕方ってありますかね?

  • Excel シート間のデータの照合

    Excelで、シート間のお客様データ(だいたい各1万件)を照合します。下記は現在の照合方法ですが、これでは時間がかかるうえ手作業が多く発生しミスにつながります。頻繁に行う作業なので、関数でも、マクロでも、とにかくもう少し簡単にできる方法がありましたら、どうぞご教授ください。よろしくお願いします!! 【目的】 シート「sheet2008」には2008年度のデータ。シート「sheet2007」には「sheet2008」と同じ形式の2007年度のデータが入っています。シート「sheet2008」に、そのお客様の2007年度の担当営業マンを表示させたいのです。 【例】 列A(電話番号): 011-231-1112 列B(名前):佐藤 一郎 列C(住所):北海道札幌市中央区北1-1-1 列D(担当営業マン):鈴木 新規の列(2007年度の担当営業マン):鈴木  ・「sheet2008」「sheet2007」はほぼ同じデータですが、一部のお客様は名前が変わっていたり、住所が変わっていたりします。  ・「sheet2007」にないお客様が「sheet2008」にあったり、その逆があったりして、各シートのデータ件数は一致しません。  ・名前が同じでも住所が違うデータ、電話番号が同じでも担当営業マンが違うデータは別者として扱います。  ・「顧客ID」のような“必ずユニークな情報”は存在しません。 【現在の照合方法】 (1)「sheet2008」の各列の前に空白列を挿入する。  (データの1行目はタイトル行…B1:電話番号/D1:名前/F:住所/H:担当営業マン)  (データの2行目以降はデータ)     列A(空白行):     列B(空白行): 011-231-1112     列C(空白行):     列D(名前):佐藤 一郎     列E(空白行):     列F(住所):北海道札幌市中央区北1-1-1     列G(空白行):     列H(担当営業マン):鈴木 (2)「sheet2007」を列Aの電話番号で昇順に並べ替える。 (3)「sheet2008」の電話番号が「sheet2007」にあるかを調べる。     A2:「=IF(B2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,1,0)),"○","▲")」 (4)(3)で調べた「sheet2008」の電話番号と同じ行にある名前/住所が「sheet2007」にあるかを調べる。     C2:「=IF(D2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,2,0)),"○","▲")」     E2:「=IF(F2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,3,0)),"○","▲")」 (5)電話番号/名前/住所がすべて一致するデータについて、「sheet2007」にある担当営業マンの値を列Gに表示させる。     G2:「=IF((AND(A2="○",C2="○",E2="○"))=TRUE,(VLOOKUP($B2,Sheet2007!$A:$D,4,0)),"▲") (6)"▲"やエラー値で表示される計算結果について、目視で確認する。 (終了)

  • Excelデータの照合

    Excelデータの照合 こちらでも色々調べさせて頂いたのですが、自分のデータにうまくあてはめられず困っています。 Excelの元データ、入力データがあります。 元データが正規のデータで、入力データにモレがないか、ミスがないかをチェックする為に 照合をしたいんですけど、どうやったらうまく出来るかわかりません。 是非ご教授下さい。 元データ、入力データ共に2列あり、どちらも A列・・・コードナンバー B列・・・コードナンバーに対応する金額 が入力されています。 これは今現在は同一シート内に抜き出してありますが、元は別シートです。 なので別シートにあるものとして回答頂いても結構です。 入力データの中から、元データのA列、B列共に一致するものだけを抽出することは出来ますか? 不一致もしくは該当するデータがないものと、一致しているものが区別で切れば形式は何でもOKです。 (作業列を増やすとか、色分けするとか、文字で表示するとか) 出来ればVBAやマクロを使わず関数のみでお願いします。 検索を使うからVLOOKUP? 複数条件だからIF?? と色々考えましたが、2つセットで検索をかけるのがどうしても出来ず・・・(-_-;) よろしくお願いします!!

  • 異なるエクセルシートの照合

    はじめての質問です。よろしくお願いします。 過去の事例でも同じような例があったと思いますが マクロは全く分からず、この設定にあったものを作成して頂けるなら幸いです。 (内容) 当方の仕入明細データと先方の売上明細データの照合です。かなり、双方の誤差が多く、現在手作業でやっていますが、時間がかかります。エクセルで誤差を 簡単に出せる方法を教えてください。 (設定) sheet1当方仕入 sheet2先方売上 A列:品名、D列:重量、E列:単価、F列:金額 です。品名は双方の表記が異なるので照合対象からはずしてください。一致するものは表示せず、差があるものだけ表記し、差額金額を出して欲しいのです。 問題は、行数の合計がsheet1と2で異なることがあります。(仕入漏れ&売上漏れ)

  • エクセルのデータ照合(book2つ)

    こんばんは。 現在、仕事でデータ照合の仕方に悩んでおります。 つたない説明で恐縮ですが、現状の説明をさせていただきます。 (1)集積されている内容が異なるデータAとBを照合したい。 (2)A、Bのブックで集められているデータの内容はイコールではないが、一部のデータを照合したい。 (3)関数等で実現したいことは、 「金額」と「予算元」がイコールなら、Bのブックに入っている「伝票番号」を、 Aのブックに自動で入力できるようにしたい。 (3)照合したいデータの量は、Aブック、Bブック、1000以上になる。 自分で考えて関数を入れてみたのですが、どうしても「FALSE」となってしまいます。 私が考えていたのは、=IFand(AA=BB,AB=BC,Vlookup(BD,AC:AD,2,0)) のような式です。 初心者なので、ちんぷんかんぷんな式ですみません。 一応、私の意図は (1)もし、ブックAのA列の金額がブックBの金額と同じで、なおかつブックAの予算元とブックBの予算元が一致するなら (2)ブックBの伝票番号を、ブックAのACからADの範囲の2列めに、入力する です。 理解不可能であれば、ここは無視したうえで、ご教授いただけると本当に助かります。 どうぞ、よろしくお願いいたします。

  • 納品書・請求書の照合について(仕入)

    商品を仕入れて販売する小さい会社の経理です。 仕入先は20社くらいあります。 多めに仕入れていくつか在庫にしておいて、残りを販売することもあります。 納品書は後日郵送でまとめて届くことが多いです。 今までは納品書と請求書の照合はしてなくて、請求書の合計額を仕入として1本で会計ソフトに入力していました。 でもこれでは、納品されてないのに、請求書に多めに記載されるかもしれないし、間違ってるかもしれないといった感じでどこまで確認していくのが良いのか悩んでいます。 納品書・請求書を扱う方、どういう経理処理しているのかチェック方法教えてください。 やはり納品書を見て毎日仕入を入力するのが普通ですか?

  • エクセルのシート間で複数条件にて照合させたい。

    1.【Sheet1のデータ例】※補助元帳データ(Excel) ---------------------------------------------------------------------------------- A B C D E F G H ・・・・ 1| No. 日付 区分A 区分B 取引先 借方 貸方 2| 78 2/1 A 1010 A商事 5,000 3| 12 2/1 B 1020 B商事 2,000 4| 50 2/1 A 1050 C(カ) 1,050 5| 44 2/2 A 1100 (カ)D 8,400 6| 94 2/3 C 1700 (ユ)Q 5,500 7| 51 2/4 B 1010 P興業 4,200 ・| ・ ・ ・ ・ ・ ・ ・ ・| ・ ・ ・ ・ ・ ・ ・ ・| ・ ・ ・ ・ ・ ・ ・ ---------------------------------------------------------------------------------- 2.【Sheet2のデータ例】※入金データ(Excel) ---------------------------------------------------------------------------------- A B C D E F G H ・・・・ 1| 日付 区分 借方 貸方 摘要 2| 2/1 CC 1,050 3| 2/1 2,000 4| 2/1 5,000 5| 2/2 CC 8,400 6| 2/3 5,500 7| 2/4 CC 4,200 ・| ・ ・ ・ ・ ・ ・ ・ ・| ・ ・ ・ ・ ・ ・ ・ ・| ・ ・ ・ ・ ・ ・ ・ ---------------------------------------------------------------------------------- 上記のようなエクセル シートがあります 1.[sheet1]と[sheet2]の日付と金額を照合させて2つの条件が一致するデータを探す 2.一致するデータの行を[sheet1]と[sheet2]ともに塗りつぶしをする(薄い黄色) 3.日付と金額が一致している行が複数あるなら対象データ(行)を薄いピンクに塗りつぶす 4.一致しないデータを[sheet3]に日付と金額のみ貼り付ける 上記のようなことをしたいのですが 関数では限界があり悩んでいます。 VBAを試してみたいのですが知恵を拝借できないでしょうか。 よろしくお願い致します。