• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【エクセル】縦データを横に並べ変えたい)

【エクセル】縦データを横に並べ変える方法

このQ&Aのポイント
  • エクセルで縦に一列に並んだデータを横に並べ変える方法についてご教授ください。
  • 特定文字から折り返して横に配置したいデータをエクセルで処理する方法について教えてください。
  • エクセルの縦データを特定文字を基準にして横に並べ替える方法を教えてください。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.3

Sheet1 において、 1.セル B1 に次式を入力して、此れを下方にズズーッとドラッグ&ペースト   =IF(OR(LEFT(A1,5)="-----",A1=""),ROW(),"")   (その結果を添付図の左側に示す) Sheet2 において、 2.セル A1 に式 =SMALL(Sheet1!$B:$B,COLUMN()) を入力 3.セル A2 に次式を入力   =IF(ROW(A1)<B$1-A$1,INDEX(Sheet1!$A:$A,A$1+ROW(A1)),"") 4.範囲 A1:A2 を右方にズズーッとドラッグ&ペースト 5.2行目(添付図では範囲 A2:F2)を選択して、此れを下方にズズーッとドラッグ&ペースト   (その結果を添付図の右上段に示す) 6.シート全体を選択して、[コピー]⇒[値の貼り付け]を実行 7.1行目を削除   (その結果を添付図の右下段に示す)

aja_1977
質問者

お礼

ありがとうございました。 大変助かりました。

aja_1977
質問者

補足

ご回答ありがとうございます。 試してみたところ、Sheet2の2と3の式を入力すると#NAME?が出て機能していません。 こちらのエクセルverが2003だからでしょうか・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#192382
noname#192382
回答No.7

すでに回答されていますが、わたしもやっとできるようになりましたので、回答させてください。 シート1に下のデータをおいて、下のマクロを実行するとシート2に答えが出てきます。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2014/2/4 ユーザー名 : ' Dim st1gyo As Integer Dim st2gyo As Integer Dim mygyo As Integer Dim mycol As Integer mycol = 1 For st1gyo = 1 To Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row st2gyo = 1 mycol = mycol + 1 If Cells(st1gyo, 2) = "zzz" Then st1gyo = st1gyo + 1 st2gyo = st2gyo + 1 If Cells(st1gyo, 2) <> "zzz" Then Worksheets(2).Cells(st2gyo, mycol) = Worksheets(1).Cells(st1gyo, 2) st1gyo = st1gyo + 1 st2gyo = st2gyo + 1 If Cells(st1gyo, 2) <> "zzz" Then Worksheets(2).Cells(st2gyo, mycol) = Worksheets(1).Cells(st1gyo, 2) st1gyo = st1gyo + 1 st2gyo = st2gyo + 1 If Cells(st1gyo, 2) <> "zzz" Then Worksheets(2).Cells(st2gyo, mycol) = Worksheets(1).Cells(st1gyo, 2) st1gyo = st1gyo + 1 st2gyo = st2gyo + 1 If Cells(st1gyo, 2) <> "zzz" Then Worksheets(2).Cells(st2gyo, mycol) = Worksheets(1).Cells(st1gyo, 2) st1gyo = st1gyo + 1 st2gyo = st2gyo + 1 If Cells(st1gyo, 2) <> "zzz" Then Worksheets(2).Cells(st2gyo, mycol) = Worksheets(1).Cells(st1gyo, 2) Else st1gyo = st1gyo - 1 mycol = mycol + 1 End If End If End If End If End If End If st1gyo = st1gyo - 1 Next End Sub

aja_1977
質問者

お礼

ご回答ありがとうございました。 マクロでもできるのですね。参考とさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 回答No.2です。 >試してみたところ、Sheet3のA2セルに式を入力すると#NAME?が表示されて機能しないようです。 >こちらのエクセルverが2003だからでしょうか。。  #NAME?エラーは、数式の中で、そのExcelで使う事が出来る関数以外の関数名が使用されていたり、名前(セルやセル範囲に定義した名前)の指定が正しくない場合において表示されるエラーです。  しかしながら、回答No.2ではセル或いはセル範囲を指定する際に、名前定義などは使用しておりませんし、使用している関数も、組み合わせてはいるものの、その中に含まれている個々の関数自体は、以前私がExcel2002を使用していた際にも、使用していた標準的な関数ばかりで、アドインが必要になる様な関数なども使用しておりませんから、後述のR1C1形式を使用しているのでもない限りは、もしエラーが出るとしましても、#NAME?エラーだけは出ない筈です。(回答No.2の添付画像にもあります様に、Excel2010ではありますが、動作確認は済んでおりますし、念のために回答No.2に掲載されている関数をコピーして、新規のExcelbookに貼り付けた際にも正常に動作致しましたから、回答No.2に掲載されている関数の内容自体には、誤りは無いと考えられます)  ですから、考えられる原因としましては、 ●質問者様が御使いになられているExcelにおいて、「ツール」の「オプション」の「全般」設定において、「R1C1参照形式を使用する」という設定になっている ●質問者様が式を入力された際に、どこかを間違えて入力しておられる の2つくらいのものだと思います。  前者に関しては、列番号の表示が、A、B、Cといったアルファベットではなく、1、2、3といった数字表示になっているかどうかで確認する事が出来ますから、もし、列番号の表示が数字になっている場合には、次のURLのページを参考にして、一旦、R1C1形式を解除してから、回答No.2の関数を入力してみて下さい。(関数を入力後に、再度R1C1形式に戻せば、関数の方も、自動的にR1C1形式に沿う様な形に書き換えられます) 【参考URL】  日経トレンディネット > デジタル > PC > Excelの列番号が数字で表示されるのはナゼ?   http://trendy.nikkeibp.co.jp/article/qa/other/20020819/101538/  Microsoft Excel A1参照形式とR1C1形式   http://www.geocities.jp/laut6/r1c1/r1c1.html  一方、後者に関しましては、あるとすれば ●質問者様が入力した関数のつづりが、回答No.2で提示させて頂いたものとは異なっている ●関数内におけるどこかの箇所で、「"」、「&」、「(」等が抜けている 等が可能性が高そうですので、再度御確認願います。

aja_1977
質問者

お礼

補足情報をありがとうございます。 昨日のエラーは#NAME?ではなく、#N/Aでした。申し訳ございません。。 このエラーは、Sheet1のA1に「元データ」のような見出しをつけることで解決できました。 また、Sheet3に#N/Aが出たままでもSheet2に式をいれると求めている情報が表示されていました。 結論として昨日ご回答いただいたままで問題ありませんでした。 大変失礼いたしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>こちらのエクセルverが2003だからでしょうか。。 IFERROR関数を外して動作を確認してください。 =OFFSET(INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW($A$1:$A$20),""),COLUMNS($A$1:A$1)),1,1)),IF(MATCH($A$1,INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW(A$1:A$20),""),COLUMNS($A$1:A$1))+1,1,1)):$A$100,0)>ROW(),ROW(),""),0) 正しく処理できているセルとエラーが表示されるセルがあると思います。 次の式を試してください。 =IF(MATCH($A$1,INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW(A$1:A$20),""),COLUMNS($A$1:A$1))+1,1,1)):$A$100,0)>ROW(),OFFSET(INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW($A$1:$A$20),""),COLUMNS($A$1:A$1)),1,1)),IF(MATCH($A$1,INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW(A$1:A$20),""),COLUMNS($A$1:A$1))+1,1,1)):$A$100,0)>ROW(),ROW(),""),0),"") IF関数の論理式(次の式)がエラーの原因と思います。 MATCH($A$1,INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW(A$1:A$20),""),COLUMNS($A$1:A$1))+1,1,1)):$A$100,0)>ROW() Office 2003が近い将来にサポート終了になりますので、一番安価なOffice 2010のアップグレード優待版で対応されると良いでしょう。

aja_1977
質問者

お礼

補足のご連絡をありがとうございます。 ご指摘の箇所でエラーが出ています。 バージョンによって利用できる関数が異なることを知りませんでしたので、今後はアップグレード検討したいと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.4

[No.3補足]へのコメント、 》 こちらのエクセルverが2003だからでしょうか そんなの関係ない! 貴方の入力した式中の文字が間違ってます。キッパリ! 私が提示した式をコピーしてみてください。 ちなみに、「#NAME?」の意味は文字どおり「そんな名前?無いよ」と言っているのです。 試しに、何処かのセルに式 =aja_1977 とか =Mike_g とかを入力してみたら、どうなりますか?#NAME? が返るはずです。 も一つちなみに、何処かのセル(別シートでも構わない)に「12345」と入力して、そのセルに aja_1977 という名前を付けたら([挿入]⇒[名前]⇒[定義]で)、式 =aja_1977 は アラ不思議 12345 を返します。

aja_1977
質問者

お礼

データの中に"- "(ハイフンの後に半角スペース)があり、これが結果に#NAME?を誘発しておりました。 この部分の半角スペースを削除したところ、きちんと機能し表示されました。 大変たすかりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、御質問の縦一列に並んでいるデータが、Sheet1のA2以下に入力されていて、並べ替えた結果をSheet2に表示させるものとします。  又、Sheet3のA列を作業列として使用するものとします。  まず、Sheet3のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(INDEX(Sheet1!$A:$A,ROW())="--------------","R0C"&COUNTIF(A$1:A1,"R0C*")+1,"R"&ROWS($1:2)-MATCH("R0C"&COUNTIF(A$1:A1,"R0C*"),A$1:A1,0)&"C"&COUNTIF(A$1:A1,"R0C*")))  次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。  次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF(COUNTIF(Sheet3!$A:$A,"R"&ROWS($A$2:A2)&"C"&COLUMNS($A$2:A2)),INDEX(Sheet1!$A:$A,MATCH("R"&ROWS($A$2:A2)&"C"&COLUMNS($A$2:A2),Sheet3!$A:$A,0)),"")  次に、Sheet2のA2セルをコピーして、上記の関数が入力されている列の数が、Sheet1のA列において「--------------」が入力されているセルの個数を上回るのに十分な列数となるまで右方向に貼り付けて行って下さい。  次に、Sheet2の2行目全体をまとめてコピーして、3行目以下に必要な行数となるまで貼り付けて下さい。  以上です。  尚、もしも、「--------------」の部分の中に含まれている「-」の個数が一定ではない場合には、Sheet3のA2セルに入力する関数を次の様なものに変更して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(AND(COUNTIF(INDEX(Sheet1!$A:$A,ROW()),"-*-"),SUBSTITUTE(INDEX(Sheet1!$A:$A,ROW()),"-",)=""),"R0C"&COUNTIF(C$1:C1,"R0C*")+1,"R"&ROWS($1:2)-MATCH("R0C"&COUNTIF(C$1:C1,"R0C*"),C$1:C1,0)&"C"&COUNTIF(C$1:C1,"R0C*")))

aja_1977
質問者

補足

ご回答ありがとうございます。 試してみたところ、Sheet3のA2セルに式を入力すると#NAME?が表示されて機能しないようです。 こちらのエクセルverが2003だからでしょうか。。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>上記のように縦一列に並んでいるデータを、特定文字から折り返して下記のように横に配列したいのですが、どのようにすればいいのでしょうか? データの最後にも仕切り用の文字列セルを設定してある場合は可能です。 下記の式で提示されたデータの範囲では検証できました。 =IFERROR(OFFSET(INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW($A$1:$A$20),""),COLUMNS($A$1:A$1)),1,1)),IF(MATCH($A$1,INDIRECT(ADDRESS(SMALL(IF($A$1:$A$20=$A$1,ROW(A$1:A$20),""),COLUMNS($A$1:A$1))+1,1,1)):$A$100,0)>ROW(),ROW(),""),0),"") この式は入れ子の関数で配列値を扱いますので数式バーに入力後、Ctrl+Shift+Enterで確定してください。 この式を右方向と下方向に必要数だけコピーすれば目的に適うものと思います。 Excel 2013で検証していますので、Excel 2003以前では対応していない関数も含んでいます。

aja_1977
質問者

補足

ご回答ありがとうございます。 ご指摘のようにエクセルが2003と古いので関数が認識されないようです。 すみません。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL 複数条件を設定

    PostgreSQLを使用しております。 それぞれ、TABLE1とTABLE1があり、 TABLE1 a-1   a-2   b-1    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    1   bbb   aaa   ddd      2   ggg   bbb   ccc        3   bbb   mmm  ddd       4   ggg   mmm  ccc    : TABLE2   a-1   a-2        c-1   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     1   bbb   aaa        eee         2   ggg   mmm       qqq    : 質問1. TABLE1.a-1=TABLE2.a-1 and TABLE1.a-2=TABLE2.a-2 を条件にして結合 したい場合、どのように結合すればよいのか。 期待結果 a-1   a-2   b-1  c-1   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    1   bbb   aaa   ddd  eee    2   ggg   bbb   ccc   ※    3   bbb   mmm  ddd   ※    4   ggg   aaa   ccc   qqq ※は空白でもNULLでもよい 質問2. 上記が可能な場合にさらに質問です。 TABLE1およびTABLE2が、SELECT,WHEREによって抽出されたものとした場合、 1つのSQL文で質問1と同様の出力にするにはどのように結合すればよいのか。(はたまた無謀なのか) 知識不足のため悩んでいる状況なので、 どなた様か知識がある方にご教授願いたく思います。

  • EXCEL VBA split関数について

    Excel VBA初心者です。 split関数についてどなたか教えていただけないでしょうか。 aaa,bbb,ccc,eee fff,ggg,hhh,iii jjj,kkk,lll,mmm というデータがあるとして、そこから aaa bbb fff ggg jjj kkk これだけ(左から2個分)を抜き取りたいのですが可能でしょうか? カテ違いな質問でしたらスミマセン。

  • 配列の移動

    TEXTファイルに文字列を書き込んだり削除したり移動したりするプログラムを作成していますが、 aaa bbb ccc ddd eee fff ggg hhh iii このような内容を 1,aaa bbb ccc 2,ddd eee fff 3,ggg hhh iii のように上から順番に配列化して番号を指定して移動させたいのですが、 3の配列を2の上(配列1と配列2の間)や下(配列2と配列3の間)に移動するのにはどのようにしたら良いのでしょうか?

    • ベストアンサー
    • Perl
  • エクセル2003 横のデータを縦に並べたいです。

    以前にも同じような質問をされている方がいるかもしれませんが、 どなたかお知恵をお貸しください。 関数を使用して処理したいと考えております。 下記にファイルの一部を抜粋致しましたので、 ご教授のほど宜しくお願い致します。 現在の形    A      B      C      D      E 1 SHIRTS カラー黒  サイズ38  サイズ39  サイズ40 上記のような形で4000行くらいあります。 列は最長でABまで使用しております。 上記のようなデータを下記のような形に並べ替えたいと思っております。 希望の形    A      B      C 1 SHIRTS カラー黒 サイズ38  2 SHIRTS カラー黒 サイズ39 3 SHIRTS カラー黒 サイズ40 サイズの展開を横表示から縦表示に変更したいのです。 素人質問で申し訳ありませんが、どなたか宜しくお願い致します。

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • 大量データの一括変換

    aaa.bbb ccc.ddd eee.fff ggg.hhh 上記のようなデータが約1万行程度あるのですが、これを下記のようなユーザ名・メルアドに変換するコマンド等、お分かりになる方教えてください。ユーザ名・メルアドの間は半角スペースです。 ある程度自分で調べた結果awk等で出来そうな気がするのですが。。。 ユーザ名  メルアド   ↓     ↓ aaa.bbb aaa.bbb@hoge.com ccc.ddd ccc.ddd@hoge.com eee.fff eee.fff@hoge.com ggg.hhh ggg.hhh@hoge.com

  • csv形式のデータの一部を削除して、上書きする方法

    前回も似たような(?)質問をしたんですが 今回も質問させてください。CSVに関して(CSVだけというわけではありませんが) 以下のようなデータを読み込んで、配列変数に格納後... aaa,bbb,ccc,ddd eee,fff,ggg,hhh iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt ↑のデータを、下のようなデータにして、保存しなおすにはどうすればよいでしょうか。(上から二列目を削除して前のデータに保存しなおす) aaa,bbb,ccc,ddd iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt 変な質問でもうしわけございませんが、回答できるかたお願いします。

    • ベストアンサー
    • Perl
  • スペース区切りのテキストデータ

    VB2005.netを使っています。 スペース区切りの2つのテキストデータが 2つのTEXTBOX内あります。 AA BBB CCC DD EEE FF GGG HHH II JJJ AA LLL MMM NN OOO FF QQQ RRR SS TTT このAAの列とCCC列を抜き出して表示させ、 AA CCC-MMM FF HHH-RRR といった計算の後の数字を行にして表示 させたいのですが、何かよい方法があるでしょうか? よろしくお願いします!

  • エクセルで文字列を縦方向にした場合、数字のみ横方向にする仕方

    エクセル2007を使っていますが、文字列の方向を縦にした場合、数字も同時に縦書きになってしまいます。(例えば6月25日と記入し文字列を縦方向にした場合、2と5が横ではなくて縦に一列になってしまう。) この場合、2と5だけ横方向であとは縦方向にするにはどうすればいいですか?

  • SQLについて

    aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 111 111 111 111 111 111 111 112 112 112 112 112 112 111 112 113 113 113 113 113 111 114 114 114 114 114 114 111 114 114 114 114 114 114 112 114 115 115 114 114 115 111 114 115 115 114 114 115 112 116 116 116 116 116 116 111 116 116 116 116 116 116 112 116 116 116 116 116 117 111 116 116 116 116 116 117 112 118 118 118 118 118 118 118 上記のようなデータより、SQLのSELECTを使用して、以下のように抽出したいです。 抽出条件は以下が全て満たしているものとなります。 ・aaa,ccc,ddd,eee,gggが重複、hhhが小さいもの ・bbbが異なるもの aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 112 112 112 112 112 112 111 ・・・(1) 112 113 113 113 113 113 111 ・・・(1) 114 114 114 114 114 114 111 ・・・(2) 114 115 114 114 114 115 111 ・・・(2) (1)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象 (2)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象  また、hhhが小さいもの 以上、よろしくお願いします。

このQ&Aのポイント
  • 自宅のWi-Fiが突然繋がらなくなり、iPhoneからWi-Fiに接続する為のパスワード(暗号化キー)を何回打ち込んでもパスワードが違いますとなります。今までこのパスワードで接続されていました。突然、パスワードが違いますとなる原因はなんなのでしょうか?ルーターの故障か何かでしょうか?
  • Wi-Fi接続時にパスワードが違いますと表示される問題が発生しました。自宅のWi-Fiが突然繋がらなくなり、iPhoneからWi-Fiに接続しようとすると、パスワードが違いますとなります。以前までは正常に接続されていましたが、突然このような状況になりました。原因や解決策について教えてください。
  • Wi-Fi接続時にパスワードが違いますというエラーメッセージが表示される問題についての質問です。自宅のWi-Fiが突然繋がらなくなり、iPhoneからWi-Fiに接続する際に、正しいパスワードを入力してもパスワードが違いますとなります。これまで正常に接続できていたのに、なぜ突然パスワードが違うと表示されるようになったのでしょうか?原因や対処方法を教えてください。
回答を見る

専門家に質問してみよう