![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
縦長の表を2段組みとしたいのですが、下記の条件があります。
Excelで作成することは可能でしょうか。
可能でしたら方法を教えていただけないでしょうか。
よろしくお願いいたします。
①縦長の表を2段組みとしたい。
②表内で並び替えが可能としたい。
③2段組み内の1段の行を削除した場合に空きが出た1段部分に
2段部分のデータが自動で繰り上がるようにしたい。
(例えば2017年1月を削除した場合に2017年8月が自動で繰り上がるようにしたい。)
子供が小さいのでご連絡が遅くなる可能性がありますが、ご回答いただけた方には必ずお返事を致します。
よろしくお願いいたします。
![「Excel 2段組み」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/542563014_5974a13e9566c/M.png)
No.1ベストアンサー
- 回答日時:
こんばんは!
① は画像のような配置ではなく、最初はA~F列だけにデータが羅列してある。
というコトですよね?
それをA~F列は7か月分だけにし、残りはG~L列に移動させたい!という解釈です。
② の「表内での並び替え」とはどの列がキーになるかが判りません。
これに関しては手作業で範囲指定 → 並び替え というコトが可能だと思いますので、今回はスルーします。
③ は仮にA~F列の1か月分(複数ヶ月でも)データを消去した場合にA~F列は上詰め、
G~L列は上詰めした月数分を繰り上げてA~F列に移動させる!という解釈です。
VBAになりますが一例です。
↓のSample① が「①」、Sample③ が「③」のコードになります。
Dim i As Long, cnt As Long
Dim lastRow1 As Long, lastRow2 As Long
Dim myRng1 As Range, myRng2 As Range
Sub Sample①()
If WorksheetFunction.CountIf(Range("A:A"), "小計") > 7 Then
Range("A1").Resize(, 6).Copy Range("G1")
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow1
If Cells(i, "A") = "小計" Then
cnt = cnt + 1
If cnt = 7 Then Exit For
End If
Next i
Range(Cells(i + 1, "A"), Cells(lastRow1, "F")).Cut Cells(Rows.Count, "G").End(xlUp).Offset(1)
lastRow1 = 0
cnt = 0
End If
End Sub
Sub Sample③()
If WorksheetFunction.CountIf(Range("A:A"), "小計") < 7 Then
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
lastRow2 = Cells(Rows.Count, "G").End(xlUp).Row
For i = 2 To lastRow2
If Cells(i, "G") = "小計" Then
cnt = cnt + 1
If cnt = 7 - WorksheetFunction.CountIf(Range("A:A"), "小計") Then Exit For
End If
Next i
Range(Cells(2, "G"), Cells(i, "L")).Cut Cells(lastRow1 + 1, "A")
Set myRng1 = Range(Cells(2, "A"), Cells(lastRow1, "A")).SpecialCells(xlCellTypeBlanks)
Set myRng2 = Range(Cells(2, "G"), Cells(lastRow2, "G")).SpecialCells(xlCellTypeBlanks)
myRng1.Resize(, 6).Delete shift:=xlUp
myRng2.Resize(, 6).Delete shift:=xlUp
lastRow1 = 0
lastRow2 = 0
cnt = 0
End If
End Sub
※ 「小計」までが各月の最終行と見なしています。
すなわち「小計」の数で行数を決めています。m(_ _)m
お礼が遅くなり申し訳ありません。
説明不足だったにも関わらず、親切に教えていただきありがとうございます。
子供が熱を出してしまい、会社に出勤できていませんが、
皆さんから教えていただいた事を自分なりに解釈して、技術不足ではありますが、作業をしたいと思います。
本当にありがとうございました。
No.3
- 回答日時:
入力表と出力(印刷)表を分けましょう。
それで解決します。入力シートに1行ずつ縦に並べたものを 出力シートでINDEX関数と
インデックス番号を使って 必要な場所に呼び出すだけでいいのです
から 難しくも何ともありません。
No.2
- 回答日時:
こんにちは
残念ながらエクセルには「2段組み」のような概念は無いと思います。
もしも、2段組みになさりたい理由が、閲覧や印刷などの利便性を目的とするものであるなら、原本のデータは通常通り1段組みで作成しておいて、閲覧や印刷には別シートで同じ内容が2段組みで表示されているものを利用するという方法がありそうです。
この方法でも、一応、ご質問の①~③を満足できますが、「並び替え」やデータの「削除」・「追加」などの操作は、原本のシートで行うことになります。
原本で操作した結果は、即時に2段組み表示の閲覧用シートに反映できますので、そのような使い方でも良ければこの方法がわかり易いのではないかと思います。
仕組みは単純で、原本シートへのセルの参照設定をしておくだけですが、ごく一般的な参照設定をすると、原本で行の削除をした場合に参照エラーとなったりしますので、INDEX関数やINDIRECT関数などを利用してセルの位置を指定する式にしておくことで、原本シートを自由に操作しても、正しく参照できるようにすることが可能になると思います。
関数式を一度設定してしまえば、あとは気にする必要はない利用法と想像しますので、ご質問の意図に合致しているかどうかは不明ですが、ひとつの方法として…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- Excel(エクセル) Excelで作成しているシート(表) 5 2023/06/15 10:20
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) EXCEL値貼り付け(ある条件のもと自動化) 5 2023/06/06 12:21
- Visual Basic(VBA) Application.Dialogs(xlDialogFileDelete).Showの件 1 2023/02/22 10:02
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Excel(エクセル) Excel 行 について 写真のように日付が並んでおり、何年何月何日以前は行削除。といったマクロ等組 2 2023/02/20 12:55
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- 減税・節税 住宅ローン控除の還付金と年金生活者 2 2022/03/30 10:43
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルで作成した縦に長い表をA4に2列で印刷
その他(Microsoft Office)
-
Excelの表を二段で印刷したい
Excel(エクセル)
-
EXCELで縦に細長いデータを横に並べて印刷する
Windows Vista・XP
-
-
4
EXCELで段組みできますか?
Excel(エクセル)
-
5
エクセル:横長の表を改行して、3列くらいに分けて印刷するには?
Excel(エクセル)
-
6
縦一列の表を縦三列にして印刷したい
Word(ワード)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
ExcelのVlookup関数の制限について
-
【条件付き書式】countifsで複...
-
Excel複数シートにあるデータを...
-
Excelでの並べ替えを全シートま...
-
エクセルで、チェックボックス...
-
エクセルの列の限界は255列以上...
-
VLOOKアップ関数の結果の...
-
Excel の複数シートの列幅を同...
-
【VBA】複数のシートの指定した...
-
エクセル マクロ 標準モジュー...
-
エクセル複数シートのデータを...
-
Excelに自動で行の増減をしたい...
-
Excelで全てのシートに一気に列...
-
VBAで検索して、行をコピー&追...
-
【マクロ】あいうえお順のシー...
-
accessでexcelを読み込む時のデ...
-
エクセル 日報売上を月報に展開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
エクセル マクロ 標準モジュー...
-
VLOOKアップ関数の結果の...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
オートフィルタ使用時にCOUNTIF...
-
スプレッドシートでindexとIMPO...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
【VBA】複数のシートの指定した...
-
Excel複数シートにあるデータを...
おすすめ情報