dポイントプレゼントキャンペーン実施中!

a1~h1セルに①~⑧いずれかの数値入力済
j列に①~⑧ k列に①~⑧に対応する値入力済み 
a1~h1 に入力された①~⑧に対応する値の合計を算出し i1に表示
50行まで同じ処理を繰り返したいのですが
見当がつきません。
どなたかよろしくご指導のほどお願いいたします。

A 回答 (4件)

A1~H1にある①~⑧の記号がそれぞれどの値に対応し、それがいくつずつあるのかによって行方向の合計が決定されるわけですから、ぞれぞれの記号の対応値と個数との積の総和が求める値になるはずです。

従って、I1に

=SUMPRODUCT($K$1:$K$8,COUNTIF($A1:$H1,$J$1:$J$8))

という数式を記述し、下方向へコピーすればよいと思います。

また、J列に①~⑧が昇順にならんでいる場合、①のJISコードが11553であることを利用して、以下の数式でもよいと思います。

=SUM(CHOOSE(CODE(A1:H1)-11552,$K$1,$K$2,$K$3,$K$4,$K$5,$K$6,$K$7,$K$8))

ただし、上記数式は配列数式になります。CTRL+SHIFT+ENTERで確定した後、下方向へコピーしてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
出来ました!感激です。
JISコードは良くわからないので今後の課題にします。
ありがとうございました。

お礼日時:2021/03/29 19:54

No2です



No3様の式のほうが的確で簡単ですね。
結果は同じになりますが、No3様の式を採用なさる方がよろしいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2021/03/29 23:34

No1です。



>#value! データの形式が正しくありませんとなってしまいます。
こちらはWindiws10 Office2019でテストしていますけれど・・・
仮に、関係セルが全て空白の状態で、I1セルに式を入れても結果が0になるだけのはずなのですが。(エラーは出ないはず)

>*1と
>ROW($A$!:$A$8)/ROW($A$!:$A$8)
>は何を意味するのか教えていただければ幸いです。
「*1」の演算は、A~H列の値をJ1:J8と比較した結果(true/falseの配列)を0, 1の値に変換するためです。
8×8の行列になりますが、各列の一致する行だけが1の値をとる行列になります。

>ROW($A$!:$A$8)/ROW($A$!:$A$8)
もしも、この式を使っているのなら、エラーの原因はここにあるものと推測されます。
全角文字があったり、!があったりと関数式になっていません。
(いい加減に書き写さずに、式はコピペで記入した方がよろしいと思います)

TRANSPOSE($K$1:$K$8)と上記の配列の積を求めて、そのSUMをとるのが簡単な算出法なのですが、試してみたところ、エクセルはTRANSPOSE($K$1:$K$8)を計算してくれないようです。
仕方がないので、K1:K8のままの形式で利用するために、8×8の行列の各行の和を求めて8×1の配列にしてから、$K$1:$K$8とのSUMPRODUCTで計算させる方法をとっています。

>(ROW($A$1:$A$8)/ROW($A$1:$A$8))
(本来はいらないはずでしたが)上述のように、行の和を計算するための、全ての要素が1である8×1の行列です。
{1;1;1;1;1;1;1;1} と記述しても同じですが、上記の記法のほうが数が多い場合にも対応可能なのでそちらにしてあります。
(要素数が8だと、文字数も長く、計算負荷も多くなってはいますけれど)
これとの行列積をとることで、元の行列の各行の和を算出しています。
    • good
    • 0
この回答へのお礼

ありがとうございました。
教えていただいた式を正確に入力せずに大変失礼いたしました。
行列の基本から勉強してみます。

お礼日時:2021/03/29 19:52

こんばんは



イマイチよくわかりませんけれど・・・

>a1~h1セルに①~⑧いずれかの数値入力済
数値ではなく、文字が入力されているものと解釈しました。
この文字をJ1:K8の表で読み替えて、K列の数値の合計を出したいものと解釈。

>j列に①~⑧ k列に①~⑧に対応する値入力済み
表の範囲はJ1:K8と仮定します。

仮定だらけになってしまいましたが、これが当たっているものとすれば、
I1セルに
=SUMPRODUCT(MMULT(INDEX(($J$1:$J$8=$A1:$H1)*1,,),(ROW($A$1:$A$8)/ROW($A$1:$A$8))),$K$1:$K$8)
の式を入力して、下方にフィルコピーでいかがでしょうか?

※ 仮定が違っている場合は、無視してください。
    • good
    • 0
この回答へのお礼

早速のご指導ありがとうございます。
fujillinさんの仮定通り①~⑧は文字でドロップダウンで選択しています。
試行してみましたが#value! データの形式が正しくありませんとなってしまいます。
*1と
ROW($A$!:$A$8)/ROW($A$!:$A$8)
は何を意味するのか教えていただければ幸いです。

お礼日時:2021/03/29 00:03

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