• ベストアンサー

縦並びのデータを横並びにしたい【Excel2003】

Excel 2003 でプロレス技のデータを編集しています。以下の例ではプロレスの3技(European Uppercut,Chop, Ear slap)のデータを例として引用しましたが、編集したいデータ元のプロレス技は500以上あり、手で入力していては膨大です。そこで、データ元の記述の規則性を利用して、数値データをExcelの関数を使って抽出したいです。そこでない知恵を絞っているのですが、どういう方法がベストですか? 手順(1)データ元をコピーして、Excelのワークシートに貼り付ける。European Uppercut が A1に、Minimum damage が A2に、.... Chop がA16に、.... (2)セル E2 に数式 =right(A2,2)を入力し、これをオートフィルでE列を埋める。 こうすることで E列は以下のように規則正しく数値を抽出できました。ここからが問題ですが、ここからこのデータを横にしたいのです。つまり、1,15,8,0,20 1,2,8,0,3 1,4,7,0,0 という形で並べ替えたいのです。 ご助言していただけないでしょうか? 1 15 8 0 ve ng ve ge er 20 Su op 1 2 8 0 ve ng ng rt ss 3 Su ap 1 4 7 0 ve ng ng ss on 0 Su 以下に抽出したいデータ元の例を挙げます。 ==================================================== European Uppercut Minimum Damage: 1 Maximum Damage: 15 Attack Bonus: 8 Bleeding %: 0 Required Position: Opening Move Obtained Position: Standing Suffered Position: Opening Move 1st Ability: Rage 2nd Ability: Berserker total Ability: 20 Torna Su Chop Minimum Damage: 1 Maximum Damage: 2 Attack Bonus: 8 Bleeding %: 0 Required Position: Opening Move Obtained Position: Standing Suffered Position: Standing 1st Ability: Head Start 2nd Ability: Lightness total Ability: 3 Torna Su Ear Slap Minimum Damage: 1 Maximum Damage: 4 Attack Bonus: 7 Bleeding %: 0 Required Position: Opening Move Obtained Position: Standing Suffered Position: Standing 1st Ability: Tireless 2nd Ability: Pacification total Ability: 0 Torna Su

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

ANo.2 です。 indirectをつかわないと、 セルの中身の文字列ではなく、セルのアドレスの文字列が対象となります。 たとえば、A3が"Maximum Damage: 15 "のとき、 indirectでは、"Maximum Damage: 15 "をさして、右2文字は"15"ですが、なければ、A3のアドレス"$A3"になって、右2文字は"A3"です。 やってみればわかるでしょう。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

関数でやる路線で入れあげているときに、割り込んで場違いかな、と思うが VBAを使うと簡単。 (1)指定URLのデータコピー (2)エクセルシートに張り付け (3)データー区切り位置ー「その他」で「:」 A列、B列に European Uppercut Minimum Damage 1 Maximum Damage 15 Attack Bonus 8 Bleeding % 0 Required Position Opening Move Obtained Position Standing Suffered Position Opening Move 1st Ability Rage 2nd Ability Berserker total Ability 20 以下略 となる。 標準モジュールに Sub test01() k = 2 '書き出し第2行から j = 10 'J列から(5列)の列ポインター For i = 1 To 180 '最下行近くの行まで繰り返し ' B列が空白でなくかつ数字の場合 If Cells(i, "B") <> "" And IsNumeric(Cells(i, "B")) = True Then Cells(k, j) = Cells(i, "B") '第K行,第J列セルに値をセット j = j + 1 '1列横列へ次の書き出しをずらす If j > 14 Then '5列超えたら j = 10 '第10列J列にもどる k = k + 1 'ただし次の書き出しは1行下に行く End If End If Next i End Sub を作る。実行すると、 結果 K-N列に 1 15 8 0 20 1 2 8 0 3 1 4 7 0 0 2 14 7 0 20 1 6 6 0 1 2 5 6 1 2 3 5 5 2 2 2 7 5 0 2 2 6 5 0 4 以下略 となる。全部で12行

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

1.数字だけ取りたい。 2.横に並べたい。 ということで、どうせrightを使うなら、直接横に並べるのはだめなのか。 たとえば、 E1に"=RIGHT(INDIRECT("$A"&(ROW()-1)*15+2,TRUE),2)" F1に"=RIGHT(INDIRECT("$A"&(ROW()-1)*15+3,TRUE),2)" G1に"=RIGHT(INDIRECT("$A"&(ROW()-1)*15+4,TRUE),2)" H1に"=RIGHT(INDIRECT("$A"&(ROW()-1)*15+5,TRUE),2)" I1に"=RIGHT(INDIRECT("$A"&(ROW()-1)*15+11,TRUE),2)" ("は入力しないよ) を入れて下にフィルしたらどうだ。

eurekamazeltov
質問者

お礼

すごい、すごーい! もしその式で、indirect 関数を使わなかったらどうなりますか? ありがとーう!

eurekamazeltov
質問者

補足

明日、早速試してみます。ちなみに元データは↓これです。 ほかのアイデアもありましたら教えてくださいませ。 http://www.wrestlingonline.eu/tabella.php?ordine=0&order=attacco&model=DESC

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

「編集」「コピー」 「編集」「形式を選択して貼り付け」で、 ダイアログの右下の「行列を入れ替える」をチェックしてO.K.すると、 縦並びのものを横並びにすることが出来ますけど・・・。

eurekamazeltov
質問者

お礼

形式を選択して貼り付け、で行列を入れ替えることができる、をよく覚えておきます!ありがとーう!

関連するQ&A