プロが教えるわが家の防犯対策術!

顧客別単価表・商品区分表(10種類位)それぞれシート別に作っています。
別のシートで仕訳表を作り、そこで顧客別商品別単価を引っ張ってきて計算したいのですが、顧客数が多くてIF文では追いつきません。
何かいい方法を提案して頂けたら幸いです。
顧客1に対して商品10位でそれぞれに単価を設定しています。現在顧客50種類位です。

A 回答 (3件)

「INDIRECT」関数と「VLOOKUP」関数を使えば、できますよ。


下に、例を示します。

>顧客別単価表・商品区分表(10種類位)それぞれシート別に作っています。
>別のシートで仕訳表を作り、そこで顧客別商品別単価を引っ張ってきて計算したいのですが、

それぞれのシートを、シート名「ユーザ1_顧客別単価表」、「ユーザ2_顧客別単価表」....として、
シート「ユーザ1_顧客別単価表」に

(行),A列,B列
(1),商品名,単価
(2),商品a,1000
(3),商品b,1200
(4),商品c,1400
(5),商品d,1600

シート「ユーザ2_顧客別単価表」に

(行),A列,B列
(1),商品名,単価
(2),商品a,950
(3),商品b,1100
(4),商品c,1250
(5),商品d,1500

と、データがあるとして、
シート「仕訳表」に

(行),A列,B列,C列
(1),ユーザ名,商品名,単価
(2),ユーザ1,商品a,
(3),ユーザ2,商品b,
(4),ユーザ2,商品c,
(5),ユーザ1,商品d,
(6),ユーザ2,商品a,

シート「仕訳表」のC2セルに
=VLOOKUP(B2,INDIRECT($A2&"_顧客別単価表'!$A$2:$B$5"),2,FALSE)
と、入れて、C2セルの計算式をC3~C6セルにコピーする。
シート「仕訳表」の結果は、

(行),C列
(2),1000
(3),1100
(4),1250
(5),1600
(6),950

となる。


なお、質問者さんのExcel表に合わせて上の計算式を変えれば、実用になると思います。
「INDIRECT」関数と「VLOOKUP」関数については、No.1の回答に解かりやすい説明のURLが載っていますので、そちらを参照してください。
    • good
    • 0
この回答へのお礼

遅くなりました。ありがおうございます。

お礼日時:2006/01/04 16:12

顧客名や商品名を入力条件として、配列(表)を利用する方向で考えたら如何でしょうか。


(例1)行項目を顧客、列項目を商品として、その交点を単価にになる表を作成し、仕訳票で顧客名、商品名をキーに二元配列(OFFSET/INDEXとMATCH関数の組み合わせ)で単価を抽出する。
=OFFSET(基準セル,MATCH(顧客名,行範囲,0),MATCH(商品名,列範囲,0))
(例2)顧客名をシート名に関連付け(名前定義)し、商品名と単価の一元配列で抽出する。
=VLOOKUP(商品名セル,INDIRECT(顧客名セル),参照列,false)
    • good
    • 0

INDIRECT関数などを利用してシート切り替え


INDEXやMATCHなど検索関数を用いて目的のものを見つける
10種類くらいの商品でしたらリストにして入力の軽減を図るなどですね
http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex …検索/行列関数(INDIRECT関数)
http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex …検索/行列関数(INDEX関数)
http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex …検索/行列関数(VLOOKUP関数)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!