• ベストアンサー

各セルを1列に並べたい

エクセル2000の質問です。 A1:C10のシートの各セルに文字データがばらばらに入っています。空白のセルもあります。これを1列に並び替えしたいのです。 たとえば あ,い,う,え,お, か,き,く,け,こ, を あ い う え お か き く け こ というように。結構大量に散らばっているので手間をかけずにできるとありがたいです。 よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

No3,No4です。 すみません、また違ってました。今日はどうかしちゃってます。 やはりテストしないで書いちゃダメですねえ。 Sub test02() For i = 1 To Selection.Count n = n + 1 Cells(n + 10, "A").Value = Selection(i).Value Next End Sub これで選択された範囲のセルのデータがいくつでも、A11から下に向かって一列に自動で入力されます。 もしA11がまずければ Cells(n + 10, "A")の部分で調整してください。+20にすればA21から、"B"にすればB列になります。

poolplayer
質問者

お礼

おどろきました! 魔法のようです。 大変感謝いたします。ありがとうございました。

その他の回答 (7)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.8

配列計算です =IF(COUNTA(範囲)<ROW(),"",INDEX(範囲,ROUNDDOWN(SMALL(INDEX(IF(範囲<>"",ROW(範囲)*10+COLUMN(範囲),""),0,0),ROW())/10,0),RIGHT(SMALL(INDEX(IF(範囲<>"",ROW(範囲)*10+COLUMN(範囲),""),0,0),ROW()),1))) 式が長くなるので、A1:C10に[範囲]と名前を付けました D列以降の1行目に貼り付け[shift]+[Ctrl]+[Enter]で確定、下方向にコピーしてください。 1行目以外に貼り付ける場合はROW()の部分をROW()-(1行目の行数-1)にしてください。

poolplayer
質問者

お礼

どうもありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.7

No.6への追記です。 No.6の式では元セルが空白セルの場合「0」を貼り付けます。 これを防ぐにはIF文で元セルが空白か否かを判断し、空白の場合は貼り付け先に空白を入れてやる必要が有ります。 式にすると↓こうなります =IF(OFFSET($A$1,INT((ROW()-1)/3),MOD(ROW()-1,3))="","",OFFSET($A$1,INT((ROW()-1)/3),MOD(ROW()-1,3)))

poolplayer
質問者

お礼

何度もスミマセンでした。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.6

No.1です。 並べ方の縦横を勘違いしていました。 どこかの列の1行目(例:F1セル)に↓を入れて30行目までコピーしてみてください =OFFSET($A$1,INT((ROW()-1)/3),MOD(ROW()-1,3))

poolplayer
質問者

お礼

お礼が遅れてスミマセンでした。 ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No3です。 質問を読み間違えていました。 ではVBAでやってみます。 以下のコードを標準モジュールにコピペし Sub test01() For i = 11 To Selection.Count n = n + 1 Cells(i, "A").Value = Selection(n).Value Next End Sub データ範囲を選択してから、メニューの「ツール」、「マクロ」、「マクロ」で出てきた「test01」を選択して「実行」

poolplayer
質問者

お礼

お礼が遅れてスミマセンでした。 ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

A1:C10を選択してコピーします。 貼り付けたい先をクリックし、メニューの編集から、「形式を選択して貼り付け」を選びます。 「行列を入れ替える」にチェックをします。 「OK」ボタン 以上です。

poolplayer
質問者

お礼

「行列を入れ替える」 これでは1列になりませんけど?

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

失礼! 間違えました。これが正解↓ =OFFSET($A$1,MOD(ROW()-1,10),INT((ROW()-1)/10))

poolplayer
質問者

お礼

試してみました。 Aさん a b c Bさん d e f 0 0 0 0 0 0 0 0 a d 0 0 0 0 0 0 0 0 b e 0 0 0 0 0 0 0 0 c f 以上のようになりました。私の印象では6行に収まらないとおかしいように思えるのですが。 ご指導よろしくお願いします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

A11に↓を入れてA30までコピー =OFFSET($A$1,MOD(ROW(),10),INT(ROW()/10)) その後、A列をコピーして、形式を選択して貼り付けで値のみを貼りつける。これでいかがですか?

poolplayer
質問者

お礼

お礼が遅れてスミマセンでした。 ありがとうございました。

関連するQ&A