[[20190322151121]] 『エクセルの複数列のデータをA列のデータの最下行ax(どびー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルの複数列のデータをA列のデータの最下行に追加したい』(どびー)

A列に名前、B列に年齢、C列に名前、D列に年齢、E列に名前、F列に年齢・・・とDR列まで入ったデータが行くらいあります。
これをA列とB列に入っているデータの最下行にB列C列、その下にD列E列のデータをと、どんどん最下行にコピペしたいのです。
B列のデータをA列のデータの最下行に転記はできたのですが2列ごと転記していくことができないのです。ご教授いただけないでしょうか?

A列   B列   C列   D列   E列   F列
山田   22   田村   20   鈴木   28


山田   22
田村   20
鈴木   28

このような結果にしたいです。
よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


B列のデータをA列にコピーしても意味無さそうですが、現状のコードを見せてもらうと、どこを直せば良いのか指摘しやすいので、次回からはコードを添えて質問してください。
 Sub test()
    Dim i As Long

    For i = 3 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
        Range(Cells(1, i), Cells(1, i + 1)).Copy Cells((i + 1) / 2, "A")
    Next i
 End Sub
(???) 2019/03/22(金) 15:48

 どこかのセルに

 =INDIRECT("r1c"&(ROW(A1)-1)*2+COLUMN(A1),FALSE)

 右隣にコピー
 両セルをフィル
(seiya ) 2019/03/22(金) 16:29

説明不足で申し訳ありません。

A列   B列   C列   D列   E列   F列

 山田   22   田村   20   鈴木   28 


A列   B列
山田   22
田村   20
鈴木   28

というような結果にしたいのです。
よろしくお願いします。

(どびー) 2019/03/22(金) 17:10


 A2
 =INDIRECT("r1c"&(ROW()-1)*2+COLUMN(),FALSE)
 B2にコピー
 A2:B2をフィルダウン
(seiya ) 2019/03/22(金) 17:20

INDEX関数案です。

A2: =IFERROR(INDEX($A$1:$DR$1,ROW(A1)*2-(COLUMN(A1)=1)),"")

右と下にコピーです。
(メジロ) 2019/03/23(土) 09:00


ご教授ありがとうございます。
INDEX関数でできました!感謝です。
一行の場合はこれで解決しますが、他に60行あるシートもあるのですが、
関数のどこをどう変えればいいのか、$DR$60にすると空白になってしまいます。
(どびー) 2019/03/23(土) 11:13

>他に60行あるシートもあるのですが、
>関数のどこをどう変えればいいのか、$DR$60にすると空白になってしまいます

INDEX(行,列)の行と列をコントロールする必要があります。
次の式でいけると思いますが、常に処理対象列がDR列までということが前提です。

=IFERROR(INDEX(Sheet1!$A$1:$DR$60,INT((ROW(A1)*2-1)/122)+1,MOD((ROW(A1)*2-1),122)+(COLUMN(A1)=2)),"")
(メジロ) 2019/03/23(土) 15:16


この数式をあてはめても、うまく結果が反映されない・・・です。
60行あるということは、C列D列の60行の数値をA列B列の最下行、つまりA列B列の61行目に転記し、次はE列F列60行分の数値をA列B列の121行目に転記する・・・という繰り返しをDR列まで繰り返すようにしたいのですが。やはり関数では難しいのでしょうか。
(どびー) 2019/03/23(土) 20:06

↑追記です。
A列   B列   C列   D列   E列   F列

山田   22   田村   20   鈴木   28
今井    8   田中   25   山崎   23
杉本   17   山中   52   田上    7
山元    9   木本    2   西野    1


A列   B列
山田   22
今井    8
杉本   17
山元    9
田村   20
田中   25
山中   52
木本    2
鈴木   28
山崎   23
田上    7
西野    1

というような結果にしたいです。空白の列もありますが、結果空白になっても、空白のみクリアできれば問題はありません。
(どびー) 2019/03/23(土) 20:43


 1,2,3,4と繰り返すには、、
 =IF(MOD(ROW(A1),4),MOD(ROW(A1),4),4)

 4行毎に 2 増やすのは、
 =INT((ROW(A1)-1)/4)*2+1

 その隣だから、
 =INT((ROW(A1)-1)/4)*2+1+1

 以上をINDEXに組み込むと、、

 1	1	2
 2	1	2
 3	1	2
 4	1	2
 1	3	4
 2	3	4
 3	3	4
 4	3	4
 1	5	6
 2	5	6
 3	5	6
 4	5	6
 1	7	8
 2	7	8
 3	7	8
 4	7	8
 1	9	10

 =INDEX($A$1:$F$4,IF(MOD(ROW(A1),4),MOD(ROW(A1),4),4),INT((ROW(A1)-1)/4)*2+ 1)
 山田	22  =INDEX($A$1:$F$4,IF(MOD(ROW(B1),4),MOD(ROW(B1),4),4),INT((ROW(A1)-1)/4)*2+1+1)
 今井	8
 杉本	17
 山元	9
 田村	20
 田中	25
 山中	52
 木本	2
 鈴木	28
 山崎	23
 田上	7
 西野	1
 (SoulMan) 2019/03/23(土) 21:51

1列の場合は、=IFERROR(INDEX(A:D,MOD(ROW(A1)-1,COUNTA(A:A))+1,ROUNDUP(ROW(A1)/COUNTA(A:A),0))&"","")
これを下にコピーしてできましたが、2列ごとになるとどうもうまくいきません。ご教授していただきたく思います。
(どびー) 2019/03/23(土) 22:06

 INDEX関数に組み込む前にご希望の通りに行列番号が変化する様に調整してから組み込まれてはいかがですか?
 ↑の例は4行毎にしてますけど、、そこを応用されてみてはどうでしょうか?
(SoulMan) 2019/03/23(土) 22:54

印象ですが、質問の内容が一定してないように思います。

前提
 1.データの範囲:A1:DR60

  2.並び変える範囲:同じシートの A61:B61 以下

 A61: =IFERROR(INDEX($A$1:$DR$60,MOD(ROW(A1)-1,60)+1,INT((ROW(A1)-1)/60)*2+1+(COLUMN(A1)=2)),"")

この式を右と下にコピーします。
(メジロ) 2019/03/24(日) 09:39


ありがとうございます!求めていた結果になりました。
感謝、感謝、感謝です。
質問の内容は一定なんですが、私の説明がその場その場で足りず
大変申し訳ありませんでした。
以後、気をつけます。
(どびー) 2019/03/24(日) 20:04

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.