質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

3回答

3634閲覧

エクセルである1列にあるすべての名前を合計部分で表示させたいです。

nissanngtr34

総合スコア24

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/11/02 04:30

出来ればエクセル関数で表示出来るようにしたいのですが、
不可能であればVBAでも構いません。

名前と点数の列名があるとします。
合計の部分ではすべての人物の表示と、それぞれの点数を合算したものを表示させたいです。

それぞれの人物の合計を出すのはSUMIFで出来そうなのですが、合計部分にすべての名前を表示し、重複する場合は一人だけ表示させるということがエクセル関数で可能でしょうか?

もしエクセル関数で無理ならvbaではどのようにすればよろしいでしょうか?

アドバイスよろしくお願い致します。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ちょっとやぼったくなりますが、1列追加して2つ目以降の重複名前の行にチェックをつけ、チェックの無い行でオートフィルタすれば、見た目上は希望したような表示になると思います。

  1. B12以降にB2~B8(元データ名前)をにコピー表示する関数(B12に =B2 等)
  2. 13行以降のA列に自身より下の行に同じ名前が無いかチェックし表示する関数

外部ページこれを参考に、チェック対象を自身の行より下に
3. C13にsumifで同じ名前の点数の合計を表示する関数
4. 13行以降のA列にチェックが無いデータでのオートフィルタ

  田中 70   鈴木 30   山田 30   木村 40 ☆ 田中 70 ☆ 鈴木 30

こういう表を作って、☆マークの行をオートフィルタで隠します。

投稿2015/11/02 06:33

編集2015/11/02 06:39
hirohiro

総合スコア2068

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBA使ったらなんとでもできますが、関数だけでなんとかする例を書きます

※画像のテーブルイメージのままの例です
※D列に間接データを作ります
※結果は元データとは別の列で、E列=名前、F列=合計、として作ります

★★★
★ 私の書いたコードに問題がありました
★ ここをご覧になった方に間違ったまま伝わるとご迷惑がかかるため
★ ta-kun 様のコードに差し替えます
★ ta-kun 様、ありがとうございました

D3のセル(間接データの作成)
=IF(COUNTIF(B$3:B3,B3)=1,ROW()-ROW(E$2),"")

E3のセル(名前の列を作成)
=IF(COUNT(E$3:E$8)<ROW()-ROW(F$2),"",INDEX(B$3:B$8,SMALL(E$3:E$8,ROW()-ROW(F$2))))

F3のセル(合計の列を作成)
=IF(F3="","",SUMIF(B$3:C$8,F3,C$3:C$8))

D3 ~ F3 を下方向にオートフィルコピー
★★★

(参考サイト)
重複のないリストを作成する

投稿2015/11/02 06:08

編集2015/11/05 09:12
takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ta-kun

2015/11/05 07:55

takitoさん、横からすいません。 合計列(F列)の式が違っているようなので、書き込みさせていただきました。 あと、入力後に場所移動しても大丈夫なように、式を変更しています。 D3のセル(間接データの作成) =IF(COUNTIF(B$3:B3,B3)=1,ROW()-ROW(E$2),"") E3のセル(名前の列を作成) =IF(COUNT(E$3:E$8)<ROW()-ROW(F$2),"",INDEX(B$3:B$8,SMALL(E$3:E$8,ROW()-ROW(F$2)))) F3のセル(合計の列を作成) =IF(F3="","",SUMIF(B$3:C$8,F3,C$3:C$8)) D3 ~ F3 を下方向にオートフィルコピー
takito

2015/11/05 09:07

あ、本当だ・・・ ta-kunさん、ご指摘に感謝します またうまく改変していただきありがとうございました
guest

0

ピボットテーブルで点数の値を「最大値」で表示するようにすれば、
すべての人の点数を表示でき、同じ名前の人の点数は大きい方の点数が表示されます。

ピボットテーブルのやり方は分かりますでしょうか。

平均値、最小値、最大値を集計してみた/Excel/ピボットテーブル

投稿2015/11/02 05:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nissanngtr34

2015/11/02 05:25

ご返答ありがとうございます。 ピポットはぜんぜん分かりません。リンクを読んでみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問