結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法
例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が
それぞれ入力されているとします。
各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、
A1~A5には【あ】
A6~A10には【い】という文字が入るようにしたいと思っているのですが、
実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。
(1)結合セルを全て解除
(2)For Next if文で1行目から順にセルを見て、何も入力されていなければ、
直上のセルに入っている文字をコピーする。
そこで、下記のような方法で高速化できないか考えたのですが、記述がわかりません。
ご教授頂けますでしょうか。
または、他に高速化できる方法がありましたらお教え頂けますと幸いです。
(1)上から順に結合セルを探す。
(2)結合セルに当たったら、結合セルを構成する先頭セルと末尾セルのアドレスを変数に記憶
(3)該当の結合セルを解除
(4)記憶したら先頭セルの内容を、先頭セル直下~末尾セルまでにコピー
(5)末尾セルの直下から、(1)~(4)を繰り返す。
どうぞ、よろしくお願いいたします。
No.1
- 回答日時:
手動で行う手順を書いてみますので、ご自身でも考えてみてください、
1.A1セルを選択する
2.結合を解除する
3.結合されていたセルが選択されたまま、Ctrlキーと Dキーを同時に押す
4.Shiftキーを押しながら Enterキーを押す
5.下向き矢印を押す
6.2へ戻る
No.3
- 回答日時:
たとえば
sub macro1()
dim LastRow
’一番下にあるのが結合セルかそうでないかで,末尾セルの取り方を工夫
with range("A65536").end(xlup)
if .mergecells then
lastrow = .offset(1).row - 1
else
lastrow = .row
end if
end with
'セルを一個ずつなめるよりは,少し早くできると思います
range("A:A").unmerge
with range("A2:A" & lastrow)
.specialcells(xlcelltypeblanks).formular1c1 = "=R[-1]C"
.value = .value
end with
end sub
No.4ベストアンサー
- 回答日時:
使用範囲が少なければ、時間はそれほどかからないと思います…
Sub 結合解除()
Dim 範囲 As Range
Dim 結合範囲 As Range
Dim 値 As Variant
For Each 範囲 In ActiveSheet.UsedRange
If 範囲.MergeCells Then
Set 結合範囲 = 範囲.MergeArea
値 = 範囲
範囲.UnMerge
結合範囲 = 値
End If
Next
End Sub
お返事が遅くなり申し訳ありません。
頂いたものをそれぞれ試してみて、一番シンプルかつ処理速度が早かった、
こちらのコードを使わせて頂きました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 17:07
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- Excel(エクセル) 関数を用いて表示したセルの内容を、見えている形でコピーする方法 2 2022/09/14 16:36
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルサーバー上のexcelファ...
-
Excel VBA:フォーム←→セルのア...
-
vbaで指定したセルより下の行を...
-
セルをクリックしたら色を変え...
-
エクセルでセルをクリックする...
-
行方向の同じ値のセルを結合す...
-
【VBA】アクティブセルだけ背景...
-
ダブルクリックでセルに色をつ...
-
Excelでプルダウンからフィルタ...
-
Excelマクロ セルを行頭に移動
-
マクロの記録で任意の文字を検...
-
(エクセルVBA)セルを左クリッ...
-
VBAでの SendKeysの変数指定方法
-
エクセルでスピンボタンとスク...
-
エクセル連結解除時、全てのセ...
-
マクロのデータ削除
-
VBA Rangeの足し算
-
Excel VBA で色付きのセルの値...
-
【マクロ】1つのセルから結合...
-
エクセルでアクティブセルに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
エクセルでセルをクリックする...
-
VBAでの SendKeysの変数指定方法
-
Excel VBA:フォーム←→セルのア...
-
Excelマクロ セルを行頭に移動
-
【VBA】アクティブセルだけ背景...
-
IF関数で違う値もTRUEになる
-
エクセルマクロで「セルのサイ...
-
Excel VBA で色付きのセルの値...
-
ダブルクリックでセルに色をつ...
-
excel マクロでの特殊文字入力方法
-
マクロのデータ削除
-
ExcelVBA コンボボックスに入力...
-
ファイルサーバー上のexcelファ...
-
VBA Rangeの足し算
-
(エクセルVBA)セルを左クリッ...
-
Excelのマクロで選択している行...
-
セルをクリックしたら色を変え...
-
エクセル:セルの色のコード番...
-
EXCEL(VBA) セルをクリックし...
おすすめ情報