『セル結合の配列化の方法』(ひーちゃん)
処理の高速化のために
セルの内容を配列にしました。
dim value as variant
value = sheet1.usedrange.value
ところが、セル結合がされているところは
データが空白になります。
┌─┬─┐
│ │B│
│A├─┤
│ │C│
└─┴─┘
value(1,1)=A
value(1,2)=B
value(2,1)=Empty
value(2,2)=C
これを以下のようにする簡単な方法がありませんか?
value(1,1)=A
value(1,2)=B
value(2,1)=A
value(2,2)=C
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
何をもって簡単というのか分かりませんが、 いちばん頭を使わないという意味では,チカラづくでループするのが
For i = LBound(Value) + 1 To UBound(Value) For j = LBound(Value, 2) To UBound(Value) If IsEmpty(Value(i, j)) Then Value(i, j) = Value(i - 1, j) Next Next (´・ω・`) 2025/09/03(水) 10:47:46
こんな書き方もあるかもしれません。 Sub sample() Dim v As Variant Dim rng As Range Dim r As Range
'対象範囲(例示です) Set rng = [A1].CurrentRegion v = rng.value
'配列の補正 For Each r In rng If r.MergeCells And IsEmpty(r.value) Then v(r.Row, r.Column) = r.MergeArea(1) End If Next End Sub 対象セル範囲がA1始まりという前提であることに注意下さい。一般的には修正が必要なコードです。
(xyz) 2025/09/03(水) 11:12:53
なお、配列操作をするようなものであれば、そもそもセル結合は悪手になりがちです。 見出し程度にとどめ、本体部分にはセル結合は使わないほうがいいでしょう。 ご承知のこととは思いますが、念のため繰り返しておきます。 (xyz) 2025/09/03(水) 11:15:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.