• 締切済み

エクセルで試合結果を入力し、各シート(チーム毎)にまとめ、データベースを自動作成する方法教えてください。

例えば、Jリーグの全試合結果をシート1に入力します。 A列に日付、B列にホームチーム名、C列にアウェイチーム名、D列に得点(ホーム)E列に失点(ホーム)、F列に得点(アウェイ)、G列に失点(アウェイ)とします。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月2日 大阪  福岡   1  0  0  1 3月9日 福岡  東京   3  1  1  3 3月9日 名古屋 大阪 シート2には、チーム毎の結果、例えば東京とすると、東京との対戦相手の結果のみが抽出される。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月9日 福岡  東京   3  1  1  3 そして、シート3を大阪とすると、大阪との対戦相手の結果のみが抽出され表示される。 このような、シート1に試合結果を入力すると各シートに表(チーム毎の表)が自動作成される関数を教えてください。 さらに、欲を言えば、シート2を東京と限定するので、B列に対戦相手、C列に場所、D列に得点、E列に失点というように一挙にまとめた表ができる関数があるとよいのですが・・・ A    B    C    D  E  3月2日 名古屋  ホーム  2  1   3月9日 福岡   アウェイ 1   3   上記のようなデータベース作成は、エクセルで無理なのでしょうか? またエクセルのマクロだと出来るのでしょうか? よろしくお願いいたします。

みんなの回答

noname#262398
noname#262398
回答No.1

まず、シート2のA1かどこかに、東京 と入力。 シート2以降の各チームの結果を、2行目から出力するとします。 G列、H列、I列を作業列として、 G2=MATCH($A$1,OFFSET(Sheet1!$B$2,I1,):Sheet1!$B$700,0)+I1 H2=MATCH($A$1,OFFSET(Sheet1!$C$2,I1,):Sheet1!$C$700,0)+I1 I2==MIN(IF(ISNUMBER(G2),G2,H2),IF(ISNUMBER(H2),H2,G2)) 35行目(?)までコピー。 A2=IF(ISNA(I2),"",INDEX(Sheet1!$A$2:$G$700,$I2,1)) B2=IF(ISNA(I2),"",INDEX(Sheet1!$A$2:$G$700,$I2,3-($C2="アウェイ"))) C2=IF(ISNA(I2),"",IF($G2=$I2,"ホーム","アウェイ")) D2=IF(ISNA(I2),"",INDEX(Sheet1!$A$2:$G$700,$I2,6-($C2="ホーム")*2)) E2=IF(ISNA(I2),"",INDEX(Sheet1!$A$2:$G$700,$I2,7-($C2="ホーム")*2)) 同じく35行目(?)までコピー。 これでご質問の一番下の表のような感じになると思います。