「みんなのテニス ポータブル」の着替えで能力アップに関して


Microsoft Excelでキャラクターの着替えで能力アップのデータリストを作っているのですが
ステータスアップの星の数が多い着替えアイテムをデータリストの中から抽出したいと考えています。

ブックの内容はキャラクターごとにワークシートを作成してあり、
A         B   C       D    E      F    G
アイテムの名前|パワー|コントロール|スピード|インパクト|スタミナ|星の数の合計
という形式で、着替えアイテムのジャンル毎に空白の列を挟んで書き込んであります。
星の数の合計は=SUM(LEN(B2),LEN(C2),LEN(D2),LEN(E2),LEN(F2))という関数を各アイテムの行にオートフィルで書いてあります。

キャラクターのワークシートを指定して、着替えアイテムのジャンル別にアイテムのデータ行を取り出せるようにしたいのですが、どのようにすれば実現できるのでしょうか。

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/08/07 10:37:16
  • 終了:2010/08/07 23:04:38

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692010/08/07 14:58:55

ポイント100pt

VBAで作ることもできますが、VBAがわからない人もいますので関数だけでやってみます。

まず、ジャンルごとに分かれていて空白列(行だと思いますが)で分かれているということですが、

関数でやるならば次のようにジャンルという列を作るのがいいと思います。

シート名はキャラクターの名前にしてください。

[f:id:SALINGER:20100807144131j:image]

※ここに書いているデータは適当に私が作ったものです。


取り出すシートはデータシートとしました。(なんでもいいです)

[f:id:SALINGER:20100807144130j:image]

ここではA1セルにキャラクター名を入れると☆の数が最大になるジャンルを1つづつ表示します。

※複数最大がある場合はそのうち一つを表示します。

B3~H6には数式が入っていまして、

B3の数式は

=INDEX(INDIRECT($A$1 & "!B:B" ),MATCH(MAX(IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0)),IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0),0)+1)

を入れて、Ctrl+Shift+Enterで配列数式とします。

※数式の前後に{}がついたら配列数式になっています。

同じようにC3のセルは次の式を入れて配列数式にしてください。

=INDEX(INDIRECT($A$1 & "!C:C" ),MATCH(MAX(IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0)),IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0),0)+1)

これは最初のB:BがC:Cとなっただけです。

同じようにH3まで1箇所だけ違う式を入れます。

次にB3からH6まで選択して下にコピーすれば数式だけで完成です。

id:iichico

サンプルの出力結果です。

http://f.hatena.ne.jp/iichico/20100807181056

http://f.hatena.ne.jp/iichico/20100807181057

お示しいただいたように動くはずなのですが、どうもうまく動かなかったようです。

念のため、私が入力したデータリストを用意しておきますので、テストサンプルにお使いください。

http://www1.axfc.net/uploader/File/so/48983.xls

2010/08/07 18:53:38

その他の回答(1件)

id:yamaneroom No.1

yamaneroom回答回数1040ベストアンサー獲得回数612010/08/07 11:23:18

仕分けのキーとなるジャンル名はどこに書いてあるのか

id:iichico

各ジャンルのブロック毎に1行目の見出しとして書いてあります。

1<ボールド指定>ジャンルの名前|パワー|コントロール|スピード|インパクト|スタミナ|星の合計

2       アイテムの名前|☆|☆☆|☆☆☆| | |=SUM(LEN(B2),LEN(C2),LEN(D2),LEN(E2),LEN(F2))

2010/08/07 14:05:59
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692010/08/07 14:58:55ここでベストアンサー

ポイント100pt

VBAで作ることもできますが、VBAがわからない人もいますので関数だけでやってみます。

まず、ジャンルごとに分かれていて空白列(行だと思いますが)で分かれているということですが、

関数でやるならば次のようにジャンルという列を作るのがいいと思います。

シート名はキャラクターの名前にしてください。

[f:id:SALINGER:20100807144131j:image]

※ここに書いているデータは適当に私が作ったものです。


取り出すシートはデータシートとしました。(なんでもいいです)

[f:id:SALINGER:20100807144130j:image]

ここではA1セルにキャラクター名を入れると☆の数が最大になるジャンルを1つづつ表示します。

※複数最大がある場合はそのうち一つを表示します。

B3~H6には数式が入っていまして、

B3の数式は

=INDEX(INDIRECT($A$1 & "!B:B" ),MATCH(MAX(IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0)),IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0),0)+1)

を入れて、Ctrl+Shift+Enterで配列数式とします。

※数式の前後に{}がついたら配列数式になっています。

同じようにC3のセルは次の式を入れて配列数式にしてください。

=INDEX(INDIRECT($A$1 & "!C:C" ),MATCH(MAX(IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0)),IF(INDIRECT($A$1 & "!$A$2:$A$100")=$A3,INDIRECT($A$1 & "!$H$2:$H$100"),0),0)+1)

これは最初のB:BがC:Cとなっただけです。

同じようにH3まで1箇所だけ違う式を入れます。

次にB3からH6まで選択して下にコピーすれば数式だけで完成です。

id:iichico

サンプルの出力結果です。

http://f.hatena.ne.jp/iichico/20100807181056

http://f.hatena.ne.jp/iichico/20100807181057

お示しいただいたように動くはずなのですが、どうもうまく動かなかったようです。

念のため、私が入力したデータリストを用意しておきますので、テストサンプルにお使いください。

http://www1.axfc.net/uploader/File/so/48983.xls

2010/08/07 18:53:38
  • id:SALINGER
    まず、A列にヘッド、ボディ、アクセサリ1、アクセサリ2といれてください。
    次に、数式中の全ての100を1000に変えてください。
    この100というのはデータ量が100行以下かなと思ったので100にしました。
    予想以上に多いようなので588以上の数字ならばちゃんと動作します。
  • id:SALINGER
    サンプルデータを見てて、星の数は多くても4つとかで同じのが多いので
    意外とマクロで最大の星のアイテムだけを抽出する方が使いやすいかも。
    マクロですが、参考までにブログの方にあげておきます。
    http://d.hatena.ne.jp/SALINGER/20100807
  • id:iichico
    数式を修正したら無事に動作しました。
    その上マクロのサンプルまで書いていただいて大変感謝しています。

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

この質問への反応(ブックマークコメント)

トラックバック

  • SALINGERの日記 2010-08-07 20:54:57
    http://q.hatena.ne.jp/1281145035 実行したいキャラクターのシートをアクティブにして、抽出()を実行すると 各ジャンル☆最大のアイテム以外を非表示にするマクロです。 非表示にしたアイテム
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません