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

画像の通りB, C, D列にキャリアに関する質問があり、3つの質問の回答はドロップダウンで選択できるようにします。その結果により括弧内のポイントを合計してキャリアの合計ポイントを表示したいのですが、何かいい方法はないでしょうか。Right関数で数字を取ってSUMする方法しかないでしょうか。その場合の方式を教えてください。

「エクセルドロップダウンメニューとSUM」の質問画像

A 回答 (2件)

少し考えてみました。


添付画像をみていただければよいのですが、配点表を項目の隣に用意しました。
ドロップダウンで、項目内容を選ぶと、MATCH関数で何行目か出てきますから、それを配点表の列から点を選ぶという方法です。

それぞれの計算は、B6:D6に出てきていますが、別の場所に移してもよいと思います。

=INDEX($M$2:$O$5,MATCH(B3,J$2:J$6,0),1)
=INDEX($M$2:$O$5,MATCH(C3,K$2:K$6,0),2)
=INDEX($M$2:$O$5,MATCH(D3,L$2:L$6,0),3)

配点表:$M$2:$O$5
B3,C2,D3 は、ドロップダウンで出てくる内容のセル
項目のそれぞれの列: J$2:J$6

1), 2), 3)  最後は、配点表の列
「エクセルドロップダウンメニューとSUM」の回答画像2
    • good
    • 0

こんにちは!



一つのセルであれば関数で簡単にできそうですが、複数セルを一括で!となるとかなり厄介ですね。
作業用のセルを設ければ可能かもしれませんが、
この際なので、この質問だけに対応する関数(ユーザー定義関数)を作る方法はどうでしょうか?

大前提として1セル内に ( ) はあっても1セットだとします。

ALT+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペーストします。

Function goukei(myRng As Range) '//この行から//
Dim c As Range, sS As Long, eS As Long, myVal As Variant
For Each c In myRng
If InStr(StrConv(c, vbNarrow), "(") > 0 Then
sS = InStr(StrConv(c, vbNarrow), "(") + 1
eS = InStrRev(StrConv(c, vbNarrow), ")")
myVal = myVal + Val(Mid(StrConv(c, vbNarrow), sS, eS - sS))
End If
Next c
goukei = myVal
End Function '//この行まで//

Excel画面に戻り(VBE画面を閉じて)
お示しの画像の配置だとB7セルに
=goukei(B2:D6)

という数式を入れ完了です。

※ 通常のワークシート関数と同じ使い方ができますので、
範囲は自由に選択してください。m(_ _)m
    • good
    • 0

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