
こんにりは、セル操作で一人ではとても無理な事があるので教えて下さい。
上画像のようにデータがA1からD1の範囲にあります。
その状態を1ボックスとするとそのボックスが上から順にならんでいる感じです。
また、B1、C1、D1の位置には文字は入力されていません。
そのA1からD4までを1つのボックス、A5からD8を一つのボックスのように維持したまま、ボックス自体を中にある値ごと下画像のように横並びに変えてきたいのです。
どのボックスも4行4列で、どのボックスにもA1~D4と同じ状態で値が存在します。
それを最下行、最後列までデータが存在する限り繰り返したいです。
私にはちょっと無理なので、具体的にマクロコードを教えて頂ける方、よろしくお願いいたします。

No.5ベストアンサー
- 回答日時:
No2です。
>枠線が取り残されてしまうので、枠線も一緒に並び替え
>するにはどうしたら良いでしょうか?
No2に記したように、Copyメソッドでコピーすれば、セルの情報(色や枠線)もコピーできます。
VBAで個別にチェックして再設定してもできますが、属性の数が多いためそれなりに面倒です。
Copyで一括コピーしてしまう方が簡単でしょう。
ただし、罫線に関しては隣り合うセルの位置関係が部位によって変わってしまうので、どちらのセルに対して罫線が引かれているかによっては、コピーした結果が変わって見える可能性はありますが、元のデータがきちんと作成されていれば、その様なことは発生しないと思います。
以下は、同一シート内に並べ替えたコピーを作成する方法でのごく簡単な例です。
※ コピーは現在の表の下に一時的に作成します。
(元の表が膨大で、この際にシートの行数をオーバーしてしまうような場合にはエラーになります)
※ 直下にコピーを作成する関係から、シート内には他のデータは存在しないものと仮定しています。
※ 元データは削除されますので、コピーシートなどでテストしてください。
Sub Q_13417817()
Dim sRange As Range, dRange As Range
Dim rw As Long, col As Long, maxRow As Long
Set sRange = Range("A1").CurrentRegion
maxRow = sRange.Rows.Count
Set dRange = Cells(maxRow + 1, 1).Resize(sRange.Columns.Count, maxRow)
dRange.Cells.UnMerge
For rw = 1 To sRange.Rows.Count Step 4
For col = 1 To sRange.Columns.Count Step 4
sRange(rw, col).Resize(4, 4).Copy dRange(col, rw)
Next col
Next rw
Rows(1).Resize(maxRow).Delete
End Sub
No.7
- 回答日時:
下記にアップしました。
https://ideone.com/oZ1L7r
線の太さを調整する場合は、以下のようにしてください。
線の太さは、上から細い→太いの順になっています。
以下の変数で調整してください。
①xlThin
②xlMedium
③xlThick
現在は、①と②を使ってます。
以下の2行が線の太さを指定する行です。
.Weight = xlThin '細線
ws.Range(ws.Cells(wrow, wcol), ws.Cells(wrow + 3, wcol + 3)).BorderAround True, xlMedium '太線
No.3
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub ボックス転置()
Dim ws As Worksheet
Dim rg As Range
Dim maxrow As Long
Dim maxcol As Long
Dim rowb As Long
Dim colb As Long
Dim arr1 As Variant
Dim arr2 As Variant
Set ws = ActiveSheet
Set rg = ws.Range("A1").CurrentRegion
maxrow = rg.Rows.count
maxcol = rg.Columns.count
If maxrow Mod 4 <> 0 Then
MsgBox ("行数が4の倍数でない")
Exit Sub
End If
If maxcol Mod 4 <> 0 Then
MsgBox ("列数が4の倍数でない")
Exit Sub
End If
'セルをarr1に転送
arr1 = rg.Value
ReDim arr2(1 To maxcol, 1 To maxrow)
'arr1からarr2へ転送
For rowb = 1 To maxrow \ 4
For colb = 1 To maxcol \ 4
Call arr_move(rowb, colb, arr1, arr2)
Next
Next
'シートクリア
ws.Cells.ClearContents
'配列2をセルへ転送
ws.Range("A1").Resize(maxcol, maxrow).Value = arr2
End Sub
'ブロック単位でarr1からarr2へ転送
Private Sub arr_move(ByVal rowb As Long, ByVal colb As Long, ByRef arr1 As Variant, ByRef arr2 As Variant)
Dim row1 As Long
Dim row2 As Long
Dim col1 As Long
Dim col2 As Long
Dim r As Long
Dim c As Long
Dim temp As Variant
For r = 1 To 4
For c = 1 To 4
row1 = (rowb - 1) * 4 + r
col1 = (colb - 1) * 4 + c
row2 = (colb - 1) * 4 + r
col2 = (rowb - 1) * 4 + c
arr2(row2, col2) = arr1(row1, col1)
Next
Next
End Sub
こんにちは 回答ありがとうございます。
枠線が取り残されてしまうので、枠線も一緒に並び替えするにはどうしたら良いでしょうか?
お手数をお掛けしますが、よろしくお願いいたします。
No.2
- 回答日時:
こんにちは
「4×4セルをひとまとまりとして、行列を入れ替えてコピペする」ようなことを考えればよろしいかと。
関数でも、マクロでも可能と思います。
いずれの場合も、一旦、別シートに並べ替えを作成して、それをそのまま使うか元のシートにコピペし直すなどが簡単そうです。
同じシートの空きセルを利用しても良いですが(=単純にオフセットするだけ)、多分、別シートの方が考えやすいでしょう。
以下は、いずれも要領のみとなりますが・・
◇関数の場合
元のシートを「Sheet1」とするなら、別シートのA1セルに
=OFFSET(Sheet1!$A$1,INT((COLUMN()-1)/4)*4+MOD(ROW()-1,4),INT((ROW()-1)/4)*4+MOD(COLUMN()-1,4))
を入力して、右方、下方にフィルコピーすれば、基本的に並べ替えて参照が可能です。
※ 関数の場合、空白セルを参照すると、結果の表示がが「0」になります。
これを防止したければ、
if(参照セル="","",参照セル)
のような式にすることで可能になります。
※ 結果を関数式ではなくしたい場合には、セル全体を「コピー」-「値をペースト」することで固定値に変換できます。
◇マクロを利用する場合
4×4をひとまとめと考えるので、行、列とも4行(列)置きに以下の処理をループすれば良いことになります。
(以下の例は、行変数をrw、列変数をcolとしています)
SourceSheet.Cells(rw,col).Resize(4,4).Copy DestSheet.Cells(col,rw)
※ セルの結合があるようなので、あらかじめ、別シート(=転記先)全体のセル結合を解除した状態にしておく必要があります。
(新規シートを利用すれば、その必要はなくなるでしょう)
※ Copyメソッドなので、(関数とは異なり)結合セルや色の情報もそのままコピーされます。
元が関数式だったりして、値だけ転記したい場合には、
Range2.Value = Range1.Value
形式で転記すれば、値のみの転記が可能です。
こんにちは、回答ありがとうございます。
関数でも出来るのですね!
今回は毎日数十の作業があるので、ボタン一発が便利かなと思います
マクロのほうですが、セル結合は無く、背景色が設定されているセルもあるので、それも移動できるのは良いと思いました。
マクロは全くわからないので、ご提示いただいた文は理解できませんが、組み合わせるときっとうまく行くんでしょうね!
いつもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ログインIDの一発入力? 5 2023/07/07 12:30
- 電車・路線・地下鉄 線路の脇にある、この三つの器具の意味と数字や文字の意味を教えてください。 わかる範囲でよいです、 1 2 2023/07/03 11:09
- Windows 10 タスクバー上に表示されたアドレス・ボックス? 1 2023/04/30 17:37
- Excel(エクセル) 【EXCEL】=セル&セルが上手く表示できない。 7 2022/09/04 21:32
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- 照明・ライト シーリングライトを取り替えるんですが、教えて下さい。 古いシーリングライトを外したら天井にはこんなも 4 2022/07/11 12:51
- カスタマイズ(バイク) リアボックス取り付け 2 2023/08/11 08:07
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
尿検査前日に自慰行為した時の...
-
病院側から早く来てくださいと...
-
【Excelで「正弦波」のグラフを...
-
リンク先のファイルを開かなく...
-
精子に血が・・・
-
MIN関数で空白セルを無視したい...
-
エクセルのラベルの値(文字列...
-
EXCELで条件付き書式で空白セル...
-
小数点以下を繰り上げたものを...
-
イタリアから帰国する際、肉製...
-
2つの数値のうち、数値が小さい...
-
精液の落とし方を教えてください
-
Excel 0目標に対して数字があ...
-
至急!尿検査前日にオナニーし...
-
excelでsin二乗のやり方を教え...
-
ある範囲のセルから任意の値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報