質問するログイン新規登録

Q&A

解決済

4回答

8987閲覧

Excelで同じ数ごと列を増やしたい

pro-poke5

総合スコア46

0グッド

0クリップ

投稿2016/09/15 00:57

編集2016/09/15 07:48

0

0

こんにちわ

Excelで同じ数ごと列を増やしたいです。

イメージ説明

この左側にあるデータを、右側のようにしたいです
連続する数字を増やすやり方はでてくるのですが、
連続しないで、参照させて同じ数ずつ行を増やすにはどうしたらよいでしょうか?

よろしくお願いいたします。

みなさまたくさんの回答ありがとうございました!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答4

0

ベストアンサー

方法1:シート上の操作で処理

少し面倒ですが、以下手順で目的の形にすることができます。

①元データに連番をつける
例:C列に連番列を作成

列A, B, C ------------ 1,ああ,1 65,いい,2 8,うう,3 48,ええ,4

②連番列まで含めてデータ範囲をコピー
上記例ではA1~C4をコピー

③貼り付けたい列に貼り付ける
例:E列に貼り付け

列A, B, C, D, E, F, G ---------------------- 1,ああ,1, , 1,ああ,1 65,いい,2, ,65,いい,2 8,うう,3, , 8,うう,3 48,ええ,4, ,48,ええ,4

④貼り付けたデータの下にさらに貼り付け(x2)
例:E列に貼り付け

列A, B, C, D, E, F, G ---------------------- 1,ああ,1, , 1,ああ,1 65,いい,2, ,65,いい,2 8,うう,3, , 8,うう,3 48,ええ,4, ,48,ええ,4 , , , , 1,ああ,1 , , , ,65,いい,2 , , , , 8,うう,3 , , , ,48,ええ,4 , , , , 1,ああ,1 , , , ,65,いい,2 , , , , 8,うう,3 , , , ,48,ええ,4

⑤貼り付け先の連番列で並べ替え
例:E~G列をG列で並べ替え

列A, B, C, D, E, F, G ---------------------- 1,ああ,1, , 1,ああ,1 65,いい,2, , 1,ああ,1 8,うう,3, , 1,ああ,1 48,ええ,4, ,65,いい,2 , , , ,65,いい,2 , , , ,65,いい,2 , , , , 8,うう,3 , , , , 8,うう,3 , , , , 8,うう,3 , , , ,48,ええ,4 , , , ,48,ええ,4 , , , ,48,ええ,4

⑥連番列をクリア
例:C列・G列をクリア

列A, B, C, D, E, F, G ---------------------- 1,ああ, , , 1,ああ, 65,いい, , , 1,ああ, 8,うう, , , 1,ああ, 48,ええ, , ,65,いい, , , , ,65,いい, , , , ,65,いい, , , , , 8,うう, , , , , 8,うう, , , , , 8,うう, , , , ,48,ええ, , , , ,48,ええ, , , , ,48,ええ,

これでできあがりです。

方法2:VBAで処理

VBAの場合、以下のような処理手順のマクロを組めば実現できます。

①出力行の変数を初期化

lRow = 1

②対象行をループ処理

For Each rng In sht.Range("A1:A4") ~ Next

③(②ループ内)1行ごとにさらに3回ループ

For iCnt = 1 To 3 ~ Next

④(③ループ内)対象行の内容を、出力先にコピー

sht.Cells(lRow, 4) = sht.Cells(rng.Row, 1) '取得行・A列のセル内容を、出力行・D列にコピー

⑤(③ループ内)出力行をカウントアップ

lRow = lRow + 1

以上のような処理を行うコードを作成すれば目的の結果が得られると思います。
コード全体は提示しませんが、頑張ってみてください。

投稿2016/09/15 02:53

jawa

総合スコア3021

0

まだ上がってない手法ということで式と関数を使って。

INDIRECT関数を使う方法

INDIRECT()という、文字列で指定されたセルの参照を行う関数があります。
以下の2つの式は、いずれもA1セルに入っている内容を参照します。

//通常のセル参照 =A1 //INDIRECTを使ったセル参照 =INDIRECT("A1")

この「1」の部分を現在の行を取得するROW()関数と、切り上げを行うROUNDUP()関数を組み合わせて動的に変動させていけば、期待通りの結果になるかと思います。

=INDIRECT("A" & ROUNDUP(ROW()/3, 0))

関数の意味がわかれば式の内容は単純な計算なので、詳しい仕組みは実際にデータを入れて確かめて下さい。

投稿2016/09/15 05:38

KaedeKazane

総合スコア408

0

手動でやることを前提に記載します。

1:C列に順番を追加して、丸ごとコピー

列A B C ------------ 1 ああ 1 65 いい 2 8 うう 3 48 ええ 4

2:必要回数分コピー(例:3回)

列A B C ------------ 1 ああ 1 65 いい 2 8 うう 3 48 ええ 4 1 ああ 1 65 いい 2 8 うう 3 48 ええ 4 1 ああ 1 65 いい 2 8 うう 3 48 ええ 4

3:C列をメインにフィルターもしくは並べ替え機能で昇順にしてC列削除

列A B ------------ 1 ああ 1 ああ 1 ああ 65 いい 65 いい 65 いい 8 うう 8 うう 8 うう 48 ええ 48 ええ 48 ええ

EXCELを活用するならこうやるかなーと思いました。

参考になれば幸いです。

投稿2016/09/15 05:12

SASAHARA

総合スコア247

0

1.コピーしたい分だけ行を増やす(行選択してCtrl+Shift++)
2.コピーしたい行の部分を選択し、「右クリックで」ドラッグ
3.ドラッグし終わるとメニューが開くので、「セルのコピー」を選択

イメージ説明

イメージ説明

プログラム関係ないからどうなんだろうとは思いますけど。。どうなんだろう。

投稿2016/09/15 01:21

編集2016/09/15 01:23
kunai

総合スコア5405

pro-poke5

2016/09/15 01:30

ありがとうございます 1つ2つ増やすのでしたらそちらでいいと思うのですけれど、たくさん1,65,8・・・の行のデータがあるのでそれを同じ数ずつ増やしたいです そういった関数はないのでしょうか? ここで質問してよいのもか悩みましたが他にもExcelのこと質問されているかたがいたので・・・すみません
kunai

2016/09/15 01:33

マクロを使って、左の各行を3行ずつにする、と言う事でしょうか。 そういう話であれば、まずご自身で書いてみて、うまく行かないところについてご質問されると良いかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問