
1行の複数のセルを、途中から分割し2行にして表を作りたいのです。
表は別シートでなくても構いません。
例えば、
横セル内容
P Q R S
1 あ ア 10 100
2 い イ 20 200
: と続く表を
別シートへ
P Q
1 あ ア
2 10 100
3 い イ
4 20 200
5 う ウ
6 30 300
:
と移動したいのです。
領域を選んでコピーすると、
1 P1
2 Q1
3 P3 ← がP2 にならないのです
4 Q3← Q2 にならないのです。
VBじゃないとできませんか。
教えてください。
■
No.6ベストアンサー
- 回答日時:
既に、複数の回答者さんが解説しておられますが、この課題を解決する方法としては
(1)INDEX関数を用いる
(2)INDIRECT関数を用いる
(3)OFFSET関数を用いる
という3種類が代表的な関数になると思います。
ここでは、INDEX関数を用いた方法をお示しします。添付画像をご覧ください。画像①のようなデータがsheet1のP列からS列にあったとして、これを画像②のようにsheet2のP列、Q列に並び替えるとすると、sheet2のP1セルに
=INDEX(Sheet1!$P:$S,ROW(A2)/2,ISEVEN(ROW(A1))*2+COLUMN(A1))
という数式を記述して右方向Q1にコピーし、P1:Q1を下方向へsheet1の最終行が表示されるまで、コピーすればよいことになります。
但し、この数式はsheet2の表示範囲外にコビーしたときのエラーチェック等は一切行っていませんので、ご承知おきください。

No.5
- 回答日時:
添付図参照(Excel 2019)
Sheet2!P1:↓
=OFFSET(Sheet1!$P$1,(ROW(A1)-1)/2,MOD(COLUMN(A1)-1,4)+MOD((ROW(A1)-1)*2,4))
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓

ありがとうございました。図までご親切につけていただき、とてもよくわかりました。皆さんから教えて頂いた関数を自分でも使ってみて、どれも結果が同じになり、EXCELの奥の深いことを知りました。とても参考になり、今回の急いで求めた質問もおかげ様で無事に解決できました。ありがとうございました。■
No.4
- 回答日時:
>確かにできましたが、少し不具合があるようにみえます。
どのような不具合なのでしょうか?それを述べて頂かないまま
>ご教示いただけると助かります。
と仰られても、何が不都合なのか不明ですので教示のしようが御座いません。
>再度質問いたしましたので
との事ですが、その新たな質問の方にも、どのような不具合だったのか記されておりません。
ひょっとして元データーの表の中で、コピーすべきデーターが入力されているセル範囲の中の左上の隅のセルがSheet1!P1セルではないのにもかかわらず、関数内で指定している参照先をSheet1!$P$1のままにしていたり、並べ替え先の別シートの表の中でデーターを表示する最初のセルがP1セルではないのにもかかわらず、関数内で指定している参照先を$P$1のままにしていたりしてはおられないでしょうか?
関数内で参照先として指定するセルは、実際の参照先のセルに合わせて修正するようにして下さい。
あと、INDEX関数以外にもOFFSET関数やINDIRECT関数を使う方法でも同様の事が出来ます。
但し、大抵のExcel関数は元データーの表の位置をずらすなどをして、参照先のセルの位置が変わってしまった場合でも、その位置が変化した参照先のセルに合わせて、関数内に記されている参照先も自動的に変更されるようになっているのですが、INDIRECT関数だけはそのような参照先の自動修正が行われないため、参照先のセルの位置が変わるたびに、関数の記述内容を手作業で修正しなくてはならなくなります。
ですから、INDIRECT関数を使った関数は可能な限り使わないようにした方が良いという事を覚えておいて下さい。
ありがとうございます。皆さんからも同様に回答を早速いただき、それぞれ教えて頂いた関数は異なりますが、いろいろな方法があることを知りました。急いでいた質問でしたのでとても助かりました。私のEXCELの知識なんてまだ初心者だということを知り、これからも学んでいこうと思います。INDIRECT関数は初めてですが、注意して使っていきます。ありがとうございました。■
No.3
- 回答日時:
マルチポストになるので、質問の修正は「補足」に対して行うようにしましょう。
・・・
(´・ω・`) 利用規約とか読まないのかな?
読まないまでも、そのくらいは知識として持ってないといけないよ。
いい機会だから「教えて!goo」でそういった一般常識的な知識を身につけておくと良いと思います。
他でも使える知識ですからね。
(別のサイトやアプリの規約も似たようなもので、違うところだけ押さえておけば良いのです)
ありがとうございます。急いで解決したかったので質問させていただきましたところ早速に教えて頂き、無事に解決することができました。今回初めてこの質問を利用させていただきました。質問のルールも知らないままお願いしたものですからご指摘も受けましたが、今後は気を付けてお伺いさせていただくこともあるかと思います。今後ともよろしくお願いいたします。ありがとうございました。■
No.2
- 回答日時:
>別シートへ
(中略)
>と移動したいのです。
のところに記述されている例と
>領域を選んでコピーすると、
(中略)
>にならないのです。
のところに記述されている例では、やっている並べ替え方がまるで異なっていますので、どちらの並べ替え方にすれば良いのかをはっきりさせて下さい。
とりあえず、
>別シートへ
(中略)
>と移動したいのです。
のところに記述されている例にある並べ替え方をする方法の1つの例を回答致します。
VBAの方がファイルのバイト数を節約出来ますが、特に節約しなくても良いなら別に関数でも出来ます。
今仮に元データーが入力されているシートのシート名をSheet1であるものとします。
その場合、まず別シートのP1セルに次のような関数を入力して下さい。
=IF(INDEX(Sheet1!$P:$S,ROW(Sheet1!$P$1)+INT((ROW()-ROW($P$1))/2),COLUMNS($P$1:$P1)+MOD(ROW()-ROW($P$1),2)*2)="","",INDEX(Sheet1!$P:$S,ROW(Sheet1!$P$1)+INT((ROW()-ROW($P$1))/2),COLUMNS($P$1:$P1)+MOD(ROW()-ROW($P$1),2)*2))
次に、別シートのP1セルをコピーして別シートのQ1セルに貼り付けて下さい。
次に、別シートのP1:Q1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。
以上です。
早速のご教示ありがとうございます。確かにできましたが、少し不具合があるようにみえます。よろしければ再度質問いたしましたので、ご教示いただけると助かります。でもやはりVBを使った方がよいでしょうか。関数ではかなり困難であることが分かりました。ありがとうございました。■
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excel シート複数 金額日計表と日付 簡単にシートコピーしたら前日の残高と日付を変更させたい 1 2022/07/15 22:10
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルについて教えてください。 3 2023/03/24 08:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelの「0」だけ非表示、小数...
-
Excelシートの保護時にデータの...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
エクセルで、加筆修正したセル...
-
EXCELのハイパーリンクのセルを...
-
Excelでスクロールすると文字が...
-
エクセルで別シートからの最大...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで20万行あるシート...
-
ExcelでTODAY関数を更新させな...
-
iPhoneのExcelアプリで、別のシ...
-
Excelにて、カタカナだけのセル...
-
ハイパーリンク で『指定された...
-
VBAで、セル(Range)のオブジ...
-
複数シートの同じセル内容を1シ...
-
Excel / 出納帳の繰越の仕方...
-
VBAでシート全体の塗りつぶしを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneのExcelアプリで、別のシ...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
別シートのセルを絶対参照にする
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
エクセルで複写のように自動入...
-
エクセルで、加筆修正したセル...
-
エクセル ハイパーリンクで画像...
-
ハイパーリンク で『指定された...
-
エクセルで20万行あるシート...
-
エクセルで特定のセルの値を別...
-
INDIRECT(空白や()がある文字列...
おすすめ情報