プロが教える店舗&オフィスのセキュリティ対策術

添付してある表のように左に入れたデータを右矢印の表のように自動反映するようにしたいのですが、この右表の「?」にはどのような式をいれればよいものでしょうか?
 右表の『A商品』・『Y支店』のところには、共にリストの設定がしてあります。商品のセル(A商品)ではA商品・B商品・C商品を選ぶことができ、支店のセル(Y支店)ではX支店・Y支店・Z支店を選ぶことが出来ます。
 このリストで選ぶと自動的にこの「?」に正しい数字が出るようにしたいです。

分かる方、教えていただけますよう宜しくお願いいたします。

「エクセルの計算式を教えてください。」の質問画像

A 回答 (9件)

エクセル関数式を使う表で、関数式で使うところの、参照するセルを「セル結合しない」のは鉄則でしょう。

(下記*)
エクセルでは、セル結合は最小限にすべきだ。色々な面で(VBAなどでも)あとの扱いが難しくなる。経験が無いからこんなことをやってしまうのだろう。
非常に式が難しくなると思う。
それで本件やむを得ず、作業列を使った。
例データ A1:D9
x支店a1x支店
b2x支店
c3x支店
y支店a4y支店
b5y支店
c6y支店
z支店a7z支店
b8z支店
c9z支店
(注)回答では表の列位置が乱れると思うが、質問の例そのまま+D列(作業列)です。
D1は=A1
D2は =IF(A2=0,D1,A2)
下方向に式を複写。結果上記の通り。
ーーー
あとは2条件の検索なので、頻繁に質問が出るもの。
SUMPRODUCT関数を使うのが常識。
エクセル2007ならSUMOFSを検討のこと。
ーーーー
F1:G2で
-a
y支店4
G2の式は
=SUMPRODUCT((D1:D9=$F$2)*(B1:B9=$G$1)*(C1:C9))
結果
上記の通り4
ーーー
*参考
A列の全行にXX支店を値としていれ、条件付き書式で直上行と同じ値の場合は、文字色を白色にして見えなくするとか。
その場合X支店などの見える位置は一番上の行になる(中央揃えは難しい)ことは、辛抱しなければならないが。
    • good
    • 0

こんにちは!


すでに多くの方が回答されていますが・・・

極力セルの結合がない方が色々と都合が良いのですが、
今回の場合、質問の表そのままをどうしても使用したいのであれば
無理矢理って方法で↓の画像のF3セルに

=IF(OR(F2="",E3=""),"",INDEX(C2:C10,MATCH(E3,A2:A10)+MATCH(F2,B2:B10,0)-1))

という数式を入れてみました。
尚、各支店の商品名の並びは全て同じでないと正確なデータを返すことができません。

そして、余計なお世話かも知れませんが、
画像の下側がSheet2になります。
実際はこのような感じで元のデータを整理すると
簡単に希望の値を返すことができると思います。

Sheet2のH2セルに
=IF(COUNTBLANK(F2:G2)>0,"",INDEX(B2:D4,MATCH(G2,A2:A4,0),MATCH(F2,B1:D1,0)))

という数式を入れています。

以上、参考になれば幸いですが、
他に良い方法があれば読み流してくださいね。m(__)m
「エクセルの計算式を教えてください。」の回答画像9
    • good
    • 0

 


____B___C___D_____H___I__
05_X支店_A商品_100___支店名_商品名_
06_____B商品_200_______A商品_
07_____C商品_300___Y支店_■■■_
08_Y支店_A商品_400___
09_____B商品_500___
10_____C商品_600___
11_Z支店_A商品_700___
12_____B商品_800___
13_____C商品_900___


質問では、B5~7、8~10、11~13は結合セルになっており、
支店名は、B6,9、12に表示されてるように見えますが
結合セルの場合は、【実際の値】は、上記の表のように
最初のセル(B5,8、11)のみに入ってますのでそれを利用します。


●I7にセットする式

=INDEX(D5:D13,MATCH(H7,B5:B13,0)+MATCH(I6,C5:C7,0)-1,0)


INDEX(求める値のある範囲、その範囲での行、その範囲での列)

INDEX(D5~D13,支店の位置+商品の位置-1、0)
★求める値のある範囲が1列なので、列は省略または0でいい


【Y支店、A商品を例として説明】

●MATCH(H7,B5:B13,0)

  支店の位置は、B5~B13の範囲を検索
  Y支店の位置:4 ← B5~B13の中で4番目

●MATCH(I6,C5:C7,0)

  商品の位置は、C5~C7の3セルを検索
  A商品の位置:1 ← C5~C7の中で1番目

●求める値は、D8(D5~D13の4番目)にあるので
上記結果から、4を求めるには

 支店の位置+商品の位置-1 = D5~D13の中での位置
    4 + 1 -1 = 4番目
 
●よって
INDEC(D5:D13、4、0)= 400 が求まる

以上です。
 
    • good
    • 0

chiizu2様の画像を拝借しまして、支店名は結合されているとして


[F4]=INDEX(C2:C10,MATCH(E4,A2:A10)+MATCH(F3,B2:B4)-1)
※エラー処理なし。
    • good
    • 0

   B    C   D E F G  H    I


5  X支店 A商品 1
6      B商品 2          A商品
7      C商品 3      Y支店    4
8  Y支店 A商品 4
9      B商品 5
10     C商品 6
11 Z支店 A商品 7
12     B商品 8
13     C商品 9

I7: =VLOOKUP(I6,OFFSET(INDIRECT(ADDRESS(MATCH(H7,B1:B13,0),3)),,,3,2),2,FALSE)
    • good
    • 0

表を次のように変える方法もあるかと思います。


無理ならば、無視してください。

     A商品  B商品  C商品
X商品   1    2    3
Y商品   4    5    6
Z商品   7    8    9
「エクセルの計算式を教えてください。」の回答画像4
    • good
    • 0

次のように作業列を作って対応することでしょう。


例えばお示しの表がA2セルからC10セルの範囲にあるとします。
そこで作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(AND(A2="",B2=""),"",IF(A2<>"",A2&"/"&B2,LEFT(D1,FIND("/",D1)-1)&"/"&B2))
答えですがF4にY支店と入力し、G3にA商品と入力するとして、その販売数をG4セルに表示させるとしたらG4セルには次の式を入力すればよいでしょう。
=IF(OR(F4="",G3=""),"",INDEX(C2:D10,MATCH(F4&"/"&G3,D2:D10,0),1))
    • good
    • 0

すみません


先ほどの表で
支店名のセルを結合してしまうと
B・Cに対応する支店名のデータが
無くなってしまいDSUM関数が
うまく機能しないので
結合させずに全ての商品名に対して
支店名を入力してください
支店名表示がうるさいようだったら
不要な支店名を
セルの書式設定→フォント→文字色→白で見えなくさせてください
条件設定のセルについても下の例のようにしてもいいです
「エクセルの計算式を教えてください。」の回答画像2
    • good
    • 0

DSUM関数を使ったらいかがですか


ただしこの場合
条件設定のセルは同じ行に記述する必要がありますので
質問のようなひょうにしたければ
どこか別の場所に条件を記述する
H2→=E4
I2→=F3
F4→=DSUM(A1:C10,"販売数量",H2:I3)として
F3の商品名とE4の支店名を変化させれば
条件に一致した販売数量の合計が出力されます
下の表の場合
条件設定のH列とI列を非表示に設定しておけば
この2列は見えなくなりますし印刷もされません
「エクセルの計算式を教えてください。」の回答画像1
    • good
    • 0

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