- ベストアンサー
各セルを1列に並べたい
エクセル2000の質問です。 A1:C10のシートの各セルに文字データがばらばらに入っています。空白のセルもあります。これを1列に並び替えしたいのです。 たとえば あ,い,う,え,お, か,き,く,け,こ, を あ い う え お か き く け こ というように。結構大量に散らばっているので手間をかけずにできるとありがたいです。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
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列になります。
その他の回答 (7)
- web2525
- ベストアンサー率42% (1219/2850)
配列計算です =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)にしてください。
お礼
どうもありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
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)))
お礼
何度もスミマセンでした。 ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
No.1です。 並べ方の縦横を勘違いしていました。 どこかの列の1行目(例:F1セル)に↓を入れて30行目までコピーしてみてください =OFFSET($A$1,INT((ROW()-1)/3),MOD(ROW()-1,3))
お礼
お礼が遅れてスミマセンでした。 ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
No3です。 質問を読み間違えていました。 ではVBAでやってみます。 以下のコードを標準モジュールにコピペし Sub test01() For i = 11 To Selection.Count n = n + 1 Cells(i, "A").Value = Selection(n).Value Next End Sub データ範囲を選択してから、メニューの「ツール」、「マクロ」、「マクロ」で出てきた「test01」を選択して「実行」
お礼
お礼が遅れてスミマセンでした。 ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
A1:C10を選択してコピーします。 貼り付けたい先をクリックし、メニューの編集から、「形式を選択して貼り付け」を選びます。 「行列を入れ替える」にチェックをします。 「OK」ボタン 以上です。
お礼
「行列を入れ替える」 これでは1列になりませんけど?
- mt2008
- ベストアンサー率52% (885/1701)
失礼! 間違えました。これが正解↓ =OFFSET($A$1,MOD(ROW()-1,10),INT((ROW()-1)/10))
お礼
試してみました。 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)
A11に↓を入れてA30までコピー =OFFSET($A$1,MOD(ROW(),10),INT(ROW()/10)) その後、A列をコピーして、形式を選択して貼り付けで値のみを貼りつける。これでいかがですか?
お礼
お礼が遅れてスミマセンでした。 ありがとうございました。
お礼
おどろきました! 魔法のようです。 大変感謝いたします。ありがとうございました。