- ベストアンサー
【再度】Excel、列を追加する方法を教えてください!
こんにちは。 Excelの使い方で悩んでいます。 今、A1~A200のセルまでテキストデータが入っています。 そのデータを編集しているところなのですが・・・。 各列に横列を追加しなくてはいけません。 A1の下に4つ列を追加する A2の下に4つ列を追加する ・ ・ ・ ・ A200の下に4つ列を追加する というように、A200まですべてに4列ずつ追加します。 【現在】 A | B | C | D ------------------------------------- 1|あ ------------------------------------- 2|い ------------------------------------- 3|う ------------------------------------- 4|え ------------------------------------- 5|お ------------------------------------- 6|か ------------------------------------- 7|き 【列を追加する】 A | B | C | D ------------------------------------- 1|あ ------------------------------------- 2| 追加する ------------------------------------- 3| 追加する ------------------------------------- 4| 追加する ------------------------------------- 5| 追加する ------------------------------------- 6|い ------------------------------------- 7| 追加する A列にデータが200も入っているので、200回も『挿入』を繰り返すことになります。 とっても大変なので、簡単にやる方法があれば、教えてください。お願いします。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
では マクロを使わない方法 まず データーが200までとして 列 AとBを 新たに追加します。 そして Aと Bに以下のように数字を振ります Aは 1から順に200まで連番 Bは 1のみ A | B | C | D ------------------------------------- 1| 1 1 あ ------------------------------------- 2| 2 1 い ------------------------------------- 3| 3 1 う ------------------------------------- 4| 4 1 え ------------------------------------- 以下最後まで同様 そしてデーターの最後の行以下に 追加する行を作成します。 A | B | C | D ------------------------------------- 201| 1 2 ------------------------------------- 202| 1 3 ------------------------------------- 203| 1 4 ------------------------------------- 204| 1 5 ------------------------------------- 205| 2 2 ------------------------------------- 206| 2 3 ------------------------------------- 207| 2 4 ------------------------------------- 208| 2 5 ------------------------------------- と Aは 1から順に200まで数字を4つ繰り返しながら連番 Bは 2から5までを 繰り返し 最後にデーターのソート 第1キーを A列の 昇順 第2キーを B列の 昇順 出来上がったら A・B列を削除。 数字入力はオートフィルで一発で出来ますね。 まずは ダミーのデーターを作ってから か コピーを使ってやってください。
その他の回答 (11)
- beer55
- ベストアンサー率33% (7/21)
こんにちは A列にデータが入力されている行まで、B列に1~7までの番号を入力(1、2、3、4、5、6、7) B8~B10セルに1.25、1.5 、1.75、 と入力 B8~B10セルを選択して下へオートフィル (2、2.25、2.5、2.75、3、3.25、3.5、3.75、4・・・等になる) 2、3、4、5等の整数はB1からB7に入力したのとダブりますが4行挿入には必要です B列を選択して、ツールバーの昇順で並べ替えアイコンをクリックする 以上
お礼
回答ありがとうございます。 No.2の方法でやりました。ありがとうございました。
- jindon
- ベストアンサー率43% (50/116)
No.9です。 質問よく読んでいませんでした。 Sheet2のA1に =INDEX(Sheet1!$A$1:$Z$200,SMALL(IF(Sheet1!$A$1:$A$200<>"",ROW($A$1:$A$200)),ROW(A1)),COLUMN(A1)) として、Ctrl+Shift+Enter で確定してから必要分フィルライト(右方向へコピー+ペースト) Sheet2のA2に =IF(MOD(ROW(),5)=0,INDEX(Sheet1!$A$1:$Z$200,SMALL(IF(Sheet1!$A$1:$A$200<>"",ROW($A$1:$A$200)),INT(ROW()/5)+1),COLUMN(A2)),"") として、同じく Ctrl+Shift+Enter で確定後フィルライト 後はA2の行(2行目)の必要分選択してフィルダウン。
お礼
再度、ありがとうございます。 やはり、Sheet2というのがわかりませんでした。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=919019 ↑の質問はどうなったのでしょうか? なんの前触れも無く、いきなり締め切って、何の説明もなく同じ質問を再投稿するのはどういうことでしょうか? 上記の質問の私の回答(No.4)は、試されたのでしょうか?
お礼
maruru01さま、すみません!! 今、回答を拝見しました!! せっかく回答いただいたのに、申し訳ありませんでした。
- jindon
- ベストアンサー率43% (50/116)
関数でSheet2に表示します。 基データの入力されたシートをSheet1として 1.下記の数式をコピー =IF(ROW()=1,INDEX(Sheet1!$A:$Z,SMALL(Sheet1!$A:$A,1),COLUMN(A1)),IF(MOD(ROW(),5)=0,INDEX(Sheet1!$A:$Z,SMALL(Sheet1!$A:$A,INT(ROW()/5)+1),COLUMN(A1)),"")) 2.Sheet2のA1をクリック→数式バーをクリック→貼り付けてください。 3.Sheet2のA1をクリックしてフィルハンドルを必要なだけ右+下方向へ 4.Sheet2をコピーしてそのまま形式を選択して張り付け→値にチェック では?
お礼
回答ありがとうございます。 Sheet2とはなんでしょうか? すみません、わかりませんでした。 No.2で教えていただいた方法でやりました。 ありがとうございました。
- snoopy64
- ベストアンサー率42% (337/793)
#3です。 すいません、一部訂正します。 E201に=E1+1 ではなくて E201に=E1+0.25 でした(>_<)
お礼
わざわざありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAなら標準モジュールに Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet '----A Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") '-----B j = 1 sh1.Activate d = sh1.Range("A1").CurrentRegion.Rows.Count For i = 1 To d sh2.Cells(j, "A") = sh1.Cells(i, "A") sh2.Cells(j, "B") = sh1.Cells(i, "B") sh2.Cells(j, "C") = sh1.Cells(i, "C") j = j + 5 Next i End Sub を貼りつけて実行すれ良い。 (自分自身の場合に向けて変更点) sh2.Cells(j, "A") = sh1.Cells(i, "A") sh2.Cells(j, "B") = sh1.Cells(i, "B") sh2.Cells(j, "C") = sh1.Cells(i, "C") A,B、C列をうつしてますが 列を加えてください E列なら sh2.Cells(j, "E") = sh1.Cells(i, "E") d = sh1.Range("A1").CurrentRegion.Rows.Count はデータがA1より開始しているときです。 第3行目からなら d = sh1.Range("A3").CurrentRegion.Rows.Count とし、 For i = 1 To d をFor i = 3 To d+2 にする。 Sheet1に空白行を入れる方法もありますが、間違える惧れが大きいので、Sheet2に実現。
お礼
回答ありがとうございます。 すみません、ちょっと理解できませんでした。 No.2で教えていただいた方法でやりました。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
先ほど似たような質問が出て、締めきられたのでは?。 関数式による回答を。 sHEET1にデータがあるとして sHEET2に望みの表を作ります sHEET2のa1に=sHEET1!a1と入れる。 sHEET2のa2に=IF(MOD(ROW(),5)=0,OFFSET(Sheet1!$A$1,INT(ROW()/5),0),"")と入れて、a3以下に式を複写します。sHEET1のデータの5倍の行まで 複写します。 b列は=IF(MOD(ROW(),5)=0,OFFSET(Sheet1!$A$1,INT(ROW()/5),1),"")といれ複写 c列は=IF(MOD(ROW(),5)=0,OFFSET(Sheet1!$A$1,INT(ROW()/5),2),"")と入れて複写です。 ---- あとsHEET2をsHEET2に値のみ複写して式を消しましょう。 VBAによる回答も出来ますが。
お礼
回答ありがとうございます。 >先ほど似たような質問が出て、締めきられたのでは? すみません。質問の仕方が悪かったので、締め切って再度質問させていただいております。 ありがとうございました。
- lively-gon
- ベストアンサー率50% (48/96)
こんにちは 制御文字を検索できる機能がある多機能なテキストエディタ(秀丸エディタなど)を使用する方法です. Windows付属のNotepadでは使えませんのでご注意下さい. A1からA200までのセルを選択して,クリップボードにコピーします. それをそのままテキストエディタに貼り付けます. ---イメージ あ[改行] い[改行] う[改行] ・・・ --- そのあと,「改行」を「5つの改行」に置換します. ---イメージ あ[改行] [改行] [改行] [改行] [改行] い[改行] ・・・ --- テキストエディタ内のすべての文字を選択してクリップボードにコピーして,それをExcelへ貼り付けます.
お礼
回答ありがとうございます。 こんな方法もあるんですね! 最近「置き換え」を覚えたばかりですので・・・ 何かの機会に利用させていただきます。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
手作業には変わりませんがこんな方法もあります。 空いている列に1~200まで入力 (先頭の2行に1,2で下方にフィルハンドルでコピー) その1~200をその下に4回コピーします。 その列で並べ替えを行えばご希望の通りになります。 最後にこの列を削除すればOK
お礼
回答ありがとうございます。 並び替えって、とても便利ですね! これから活用していきます。 ありがとうございました。
- snoopy64
- ベストアンサー率42% (337/793)
横方向は列、縦方向は行といいますヽ(^。^)ノ で、マクロを使う方法はすでに出ていますので、ソートを使う方法を。 未使用の列(ここでは仮にE列とします)に、1から200までの連番を振ります。 (E1に1、E2に2と入れ、E1:E2を選択し、右下の四角をE200までドラッグ) E201に=E1+1と式を入れ、E201をE800までドラッグすると、E800に200.75となります。 E列を選択し、右クリック→コピー E列を選択し、右クリック→形式を選択して貼り付け→値 全セルを選択(Aの左、1の上の部分をクリック)し、データ→並び替えで、E列昇順でソートします。 最後にE列の中身をクリアしてください。 頑張ってくださいヽ(^。^)ノ
お礼
回答ありがとうございます。 No.2の方法と同じような方法ですね。 ありがとうございました。
- 1
- 2
お礼
回答ありがとうございます。 教えていただいた方法でやってみました! できました!できました!! ありがとうございます。 並び替えって、今まで使ったことなかったんですが、便利ですね! ありがとうございました。