
こんにりは、セル操作で一人ではとても無理な事があるので教えて下さい。
上画像のようにデータが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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
2つの数値のうち、数値が小さい...
-
エクセルで数式の答えを数値と...
-
エクセル指定した範囲からラン...
-
VLOOKUP関数を使用時、検索する...
-
一番多く表示のある値(文字列...
-
値が入っているときだけ計算結...
-
MIN関数で空白セルを無視したい...
-
ある範囲のセルから任意の値を...
-
エクセルで空白セルを含む列の...
-
エクセルのラベルの値(文字列...
-
爪が紫色?
-
健否~書類の書き方~
-
EXCELで条件付き書式で空白セル...
-
彼女のことが好きすぎて彼女の...
-
納豆食べた後の尿の納豆臭は何故?
-
エクセルでエラーが出て困って...
-
ワードのページ番号をもっと下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
爪が紫色?
-
ワードのページ番号をもっと下...
-
エクセル指定した範囲からラン...
-
VLOOKUP関数を使用時、検索する...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
EXCELで式からグラフを描くには?
-
風俗店へ行く前のご飯
-
リンク先のファイルを開かなく...
-
エクセルで数式の答えを数値と...
-
勃起する時って痛いんですか? ...
-
値が入っているときだけ計算結...
-
MIN関数で空白セルを無視したい...
-
精子に血が・・・
-
一番多く表示のある値(文字列...
-
エクセルのラベルの値(文字列...
-
白血球が多いとどんな心配があ...
おすすめ情報