[[20250903101718]] 『セル結合の配列化の方法』(ひーちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『セル結合の配列化の方法』(ひーちゃん)

処理の高速化のために
セルの内容を配列にしました。

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.