• ベストアンサー

縦並びのデータを横並びにしたい【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/17068)
回答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% (7987/21355)
回答No.1

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

eurekamazeltov
質問者

お礼

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

関連するQ&A

  • 縦並びデータを横並びに加工(Excel、CSV)

    以下のようなCSVデータがあります。 県名,品物名,購入者 青森,りんご,西田さん 青森,りんご,斉藤さん 青森,りんご,山田さん 愛媛,キウイ,島田さん 愛媛,みかん,石川さん 愛媛,みかん,佐藤さん 愛媛,みかん,田中さん 愛媛,みかん,小林さん ・ ・ ・ これを以下のように加工したいです。 県名,品物名,購入者1,購入者2,購入者3,購入者4・・・・・購入者100 青森,りんご,西田さん,斉藤さん,山田さん 愛媛,みかん,石川さん,佐藤さん,田中さん,小林さん 愛媛,キウイ,島田さん ・ ・ ・ 要は、品物名でグループ化し、購入者の値を横並びにして項目名は連番にしたいです。 (項目名の連番は最後に手作業でも問題なし) エクセルの手作業でならできましたが、品物名が500を超える場合があり、 購入者の数も100近くになるため、毎週こういうことはできないため、 エクセルやアクセスでなるべく簡単にできたらいいと思います。 スマートな方法のアイデアがあったらご教授ください。

  • 横並びデータを縦並びに変更

    左枠内のように並んでいるデータがあります。 氏名をキーとして商品と個数を右枠内のように、縦並びに変換したいです。 左枠内のデータは1000を超えると想定しておりますので マクロで処理ができればと思っているのですが、 初心者のため、どういう風にマクロを組めばいいかわかりません。。。 ご教授いただければ幸いです。 どうぞよろしくお願いいたします。

  • Excelで縦並びのデータを横並びにする

    縦に並んでいるデータを横に並び替える操作で便利をご存知の方がいましたら、教えてください。

  • SQLについて(横並びのデータを縦並びのデータにしたい)

    いつもお世話になっております。 質問なのですが以下のデータがあったとして、 年月  会社 A事業部_人数 B事業部_人数 ―――――――――――――――――――――― 11/18  A   25      40 11/18  B   20      30 11/18  C   100     150 これを 年月  会社 事業部  人数 ―――――――――――――――――――――― 11/18  A   A    25 11/18  A   B    40 11/18  B   A    20 11/18  B   B    30 11/18  C   A    100 11/18  C   B    150 としたい場合、SQLはどうなりますか?いろいろ考えたのですが自分では無理でした。どなたかご教授ください><

  • 横並びを縦並びに並べる方法

    表題では、意味が伝わらないと思いますので、具体的に説明したいと思います。 私の働く会社で、最近流れ始めた製品の検査方法について、皆様からアドバイス頂きたく、質問させて頂きます。 製品のサイズは、約30mm×7mm×3mmの長方形の焼結体です。 現在の方法は、ガラスに横(7mm方向)にある程度の数を並べ、その上からガラスをおいて両面を検査し、側面(3mm方向)を外観検査しています。 一日の出荷量が20kチップで、検査時間は約一日掛かっています。この時間の 大半が、7mm方向面の検査後の3mm方向の並び替えに時間えお要してます。 時間短縮の為、色々試してみましたが、7mm方向から3mm方向に立てる方法が 一向に見付からず、悩んでいます。

  • エクセルにて横並びを縦並びにしたいです

    横軸に複数あるデータを項目ごとに縦並びにまとめたいです。 ピボットでやろうと思っても結局最初の並びになってしまいます。 画像の下表のようにするにはどうしたらよいでしょうか。

  • (VBA) 横並びを縦並びに

    kkkkkmさん、毎回アドバイスいただき感謝します。 以下のスレッドが元になります。 https://okwave.jp/qa/q10027270.html なぜだか?私の質問スレッドが消えてしまいました。 途中で投げ出したような感じで気持ちが悪いので続けます。 以下は、最後のkkkkkmさんの回答への追加質問になります。 >LastRowNum2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row >の位置がソートの前のあたりに無いと1回目(実行前のsh2にデータが無い時LastRowNum2が1のままなので)ソートしてくれませんでした。 LastRowNum2は、ソートの時のソート範囲にしか利用しないので おっしゃるようにソートの前で問題ないのですが sh2にDATAが無い状態とは マクロが実行されていない最初の状態又は SH1にDATAが無い状態でマクロを実行した時だけだと思うのですが ? 一応、次回に備えてsh2のシート全体を初期化のため sh2.Cells.ClearContents を最初に追加しました。 >D列のソートでいいかどうか、利用者で変更してくれるといいですね。 今回はD列(項目)でソートしていますが ソートのキーとしてA,B,C,Dの4つが考えられます。 それぞれ優先順位でD-A-B-C や A-B-C-D など色々組み合わせが考えられますが これの組み合わせを網羅して利用者が選択できるようにするには 簡単では無いような気がします。 勉強のため少し考えてみますが、 考え方(ロジック)や使用すべき関数などを紹介下さい。 >Resize 確かにresizeを使用したほうが分かりやすいですね。 '------------------------------------- と「ここまで」記載した時点でスレッドが消滅してしまいました。 以下が現在のコード Option Explicit Sub Macro1() Dim sh1 As Worksheet, sh2 As Worksheet Dim LastRowNum As Long, LastRowNum2 As Long Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") LastRowNum = sh1.Cells(Rows.Count, 1).End(xlUp).Row '書き出しシート(sh2)の初期化 sh2.Cells.ClearContents '見出し行 sh2.Range(sh2.Cells(1, "A"), sh2.Cells(1, "D")).Value = sh1.Range(sh1.Cells(1, "A"), sh1.Cells(1, "D")).Value '同一(ID,名前) sh2.Range(sh2.Cells(2, "A"), sh2.Cells(LastRowNum, "B")).Value = sh1.Range(sh1.Cells(2, "A"), sh1.Cells(LastRowNum, "B")).Value sh2.Range(sh2.Cells(LastRowNum + 1, "A"), sh2.Cells(2 * LastRowNum - 1, "B")).Value = sh1.Range(sh1.Cells(2, "A"), sh1.Cells(LastRowNum, "B")).Value '手術日,項目 sh2.Range(sh2.Cells(2, "C"), sh2.Cells(LastRowNum, "D")).Value = sh1.Range(sh1.Cells(2, "C"), sh1.Cells(LastRowNum, "D")).Value '手術日,項目(配置換え) sh2.Range(sh2.Cells(LastRowNum + 1, "C"), sh2.Cells(2 * LastRowNum - 1, "D")).Value = sh1.Range(sh1.Cells(2, "E"), sh1.Cells(LastRowNum, "F")).Value LastRowNum2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row 'ソート sh2.Range(sh2.Cells(2, "A"), sh2.Cells(LastRowNum2, "D")).Sort key1:=sh2.Range("D1"), order1:=xlAscending, Header:=xlYes Set sh1 = Nothing Set sh2 = Nothing End Sub

  • マクロ:横並びデータを縦並びに変更

    添付のように、横に並んでいるデータを、 縦に並べ変えるマクロを組みたいのですが、 ネットで検索して、組んでみたのですが、 基本的な知識がなくてうまくいきません。 データ量もあり、頻繁に発生する作業なので、 教えて頂けると大変助かります。 よろしくお願い申し上げます。

  • excelで、セル内の横並びのデータを、違うシートへ縦並びにしたい

    予定表を作っています。 例えば、シート月予定のセルA1内に「松 竹 梅」と3つ事項を全角スペースで横並びに入力します。 これを、違うシート年予定のセルB2にリンクさせるために、 計算式をB2=月予定!A1にすると、 ただ単に同じ横並びの「松 竹 梅」のように貼り付けるだけです。 ここのところで、セルB2内に、 松 竹 梅 と並び替えたいのですが、わかりません。置換のctrl+Lはだめでした。 どうすればいいのか教えてください。  (カテゴリーが違っていたら、申し訳ありません。

  • 横並びのテキストデータを縦並びに変更する方法

    どなたかご存知の方がいらっしゃいましたら,教えてください。 --------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ・・・ --------------------------------------------- のように横並びに配列されたテキストデータを, ----------- 1 2 3 4 5 6 ・ ・ ・ ----------- のように縦並びに変更したいのですが,操作方法がわかりません。 エクセルに変換?とかでしょうか。 よろしくお願いします。

専門家に質問してみよう