こんにりは、セル操作で一人ではとても無理な事があるので教えて下さい。
上画像のようにデータが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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
エクセルで数式の答えを数値と...
-
EXCELで式からグラフを描くには?
-
EXCELで条件付き書式で空白セル...
-
彼女のことが好きすぎて彼女の...
-
2つの数値のうち、数値が小さい...
-
MIN関数で空白セルを無視したい...
-
エクセルのラベルの値(文字列...
-
エクセル指定した範囲からラン...
-
一番多く表示のある値(文字列...
-
精液の落とし方を教えてください
-
小数点以下を繰り上げたものを...
-
至急!尿検査前日にオナニーし...
-
リンク先のファイルを開かなく...
-
値が入っているときだけ計算結...
-
ワードのページ番号をもっと下...
-
EXCELの条件付き書式で数式を空...
-
甲状腺が腫れているが血液検査...
-
これって喉仏ですか? 私は女性...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
精液の落とし方を教えてください
-
勃起する時って痛いんですか? ...
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
エクセルで数式の答えを数値と...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
EXCELで式からグラフを描くには?
-
イタリアから帰国する際、肉製...
-
エクセルのラベルの値(文字列...
-
Excel 0目標に対して数字があ...
-
ある範囲のセルから任意の値を...
-
風俗店へ行く前のご飯
-
リンク先のファイルを開かなく...
-
甲状腺が腫れているが血液検査...
おすすめ情報