• 締切済み

Excelでの関連付け?結び付け…

エクセル2010使用です。 毎月増える顧客の売り上げ管理で悩んでいます。 教えて下さい。 Sheet1、Sheet2は、売り上げのシステムからエクセルで出力できる表です。 毎月少しずつ顧客が増えていますので、月次にしたときにSheet3のような表にしたいのですが どのような数式で可能でしょうか。 ■「コード」をA列、「顧客名」をB列  「売上」をC列として教えて頂きたいです。 ■顧客数は毎月増減します ■顧客登録以前の表での表し方は「―」  売上の0円だった月の表し方は「0」としたいです。 できれば関数の簡単な意味(これはSheet1の2列目を参照するための2だ)を教えて頂ければ勉強になります。 宜しくお願い致します。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>Sheet1、Sheet2は、売り上げのシステムからエクセルで出力できる表です。 「売り上げのシステムからエクセルで出力できる表」? 文法が正しくないように思われます。 「売り上げシステムから出力されるExcel(CSV形式?)の元データ」 6月分が出たときはSheet3が6月分で月次集計がSheet4になるのでしょうか? 7月分が出たときはSheet4が7月分で月次集計がSheet5になるのでしょうか? >どのような数式で可能でしょうか。 VLOOKUP関数を使えば目的に合うと思いますが、1ヶ月分について1つの数式を下へコピーするのは良いのですが、4月分を右へコピーして5月分にするためにはSheet名を変更するのでINDIRECT関数で範囲を可変にする必要があるでしょう。 =IFERROR(VLOOKUP($A3,INDIRECT("Sheet"&COLUMN(A1)&"!$A:$C"),3,FALSE),"-") IFERROR関数はVLOOKUP関数で検索値が見付からないときにエラーが発生するので該当なしのとき"-"を返します。 気になることは"-"が文字列で左揃えとなり、金額は数値なので右揃えになりますので、文字列のときだけ中央揃えにすることができません。 代案として"  -"のように先頭に空白文字を挿入して中央揃えに近い表示にすることは可能です。 >できれば関数の簡単な意味(これはSheet1の2列目を参照するための2だ)を教えて頂ければ勉強になります 回答欄で長々と説明するのは如何なものかと・・・・ 関数の使い方はヘルプ機能で例題を見ながら習得することをお勧めします。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

以下の制限がありますが、関数で可能です。 ・VLOOKUP関数で「得意先名」(又は「コード」)を検索対象とし集計します。 ・予め重複しない「コード」又は「得意先名」の表をSheet3に作成する必要があります。 【データの様式確認】 ▼Sheet1及びSheet2 シート名は其々、「Sheet1」「Sheet2」であるとします。 (異なる場合はSheet3シートの数式を適切に変更願います)  1行目:表タイトル「○月分」  2行目:項目名「コード、得意先名、売上高」  3~n行目:データ(列範囲:A~C列) であるとします。 【作業手順】 ▼Sheet3(別名でも可) (1)Sheet3に同様の様式で表を作成して下さい。(添付図参考) (2)以下の数式をセルC3、D3に貼付け   セルC3=IF(ISERROR(VLOOKUP($B3,Sheet1!$B:$C,2,FALSE)),"-",VLOOKUP($B3,Sheet1!$B:$C,2,FALSE))   セルD3=IF(ISERROR(VLOOKUP($B3,Sheet2!$B:$C,2,FALSE)),"-",VLOOKUP($B3,Sheet2!$B:$C,2,FALSE)) (3)セルC3、D3を範囲選択後、C商事の6行目までフィルハンドルでオートフィル 【関数説明】 ◆VLOOKUP(検索文字、対象範囲、列番号、検索方法)関数 対象範囲の左の列より検索文字で検索し、検索方法(近似一致/完全一致)で一致した行の検索範囲における左から列番号目の値を返します。 検索で一致しない場合はエラーを返します。 ◆ISERROR(値) 値がエラーであれば真(TRUE)を、エラー以外であれば偽(FALSE)を返します。 ◆IF関数(条件式、真の場合の処理、偽の場合の処理) 条件式が成立(TRUE)する場合は、真の場合を処理し、しない場合は偽の場合の処理を行います。 【数式の処理手順】 (1)VLOOKUP関数でキーとなる得意先名「$B3」を範囲「Sheet1!$B:$C」列より、完全一致検索「FALSE」し、一致した行の売上高の列である「2」番目(B列=1番目、C列=2番目)の列の値を取得します。  (5月の場合は、範囲が「Sheet2!$B:$C」になります) (2)ISERROR関数で(1)がエラーであるかを判定します。  (4月でD商事が完全一致で検索されなかった場合にエラーとなります) (3)IF関数で(2)の判定式を条件式として、処理を分岐  (2)がエラーの場合:"-"を表示  (2)がエラーでない場合:(1)を表示((1)と同じVLOOKUP関数を記述しています) 【補足事項】 ※得意先名を自動的に集約して一つの表に纏めるとの事でしたら、VBAによる処理になります。 ※Sheet1、Sheet2が異なる場合は数式内のシート名を変更ください。 ※6月、7月・・・と続く場合はシート名を適時変更し、【作業手順】の(2)(3)を繰り返してください。 ※「得意先名」が重複し、「コード」が重複しない場合はVLOOKUP関数の範囲を「$A:$C」とし、  列番号を「3」に変更してください。コードを検索対象とします。 ※検索対象の得意先名(又はコード)の増減が有る場合、月次集計のリストに得意先名(又はコード)を追加する必要があります。  (全ての月の得意先名(又はコード)を含むリストを作成する必要があります)