[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『結合セルの行数を数える方法』(まさ)
例:
A1からA3が結合されていて文字が入力されている
A4からA7が結合されていて文字が入力されている
A8からA10が結合されていて文字が入力されていない
A11からA13が結合されていて文字が入力されている
場合、空白なセルが3つまたは、空白じゃないセルは10という結果を出したいのですが、どうかわかるかたよろしくおねがいします。
ユーザ定義関数の COUNTA マージ版です。 Function countMergeA(rng As Range) Dim r As Range countMergeA = 0 For Each r In rng If r.MergeArea.Cells(1, 1).Value <> "" Then countMergeA = countMergeA + 1 End If Next End Function のような感じで出ないでしょうか。 (Mook)
Sub 結合セル確認()
rng = Range("A1:A13")
countMergeA (rng)
End Sub
ユーザ定義関数はご存じないでしょうか。 上記のコードを標準モジュールにおいてシート上で =countMergeA(A1:A13) のようにします。
試したようにしてもできると思いますが、数値を返す関数なので MsgBox countMergeA( Range("A1:A13") ) としたら表示されると思いますが。
マクロの形だけをまねるのではなく、内容を理解して使用しないと、 意図した結果が得られなくなってしまいます。 (Mook)
Sub 結合セル確認()
MsgBox countMergeA(Range("A1:A13"))
End Sub
横から失礼
>空白なセルが3つまたは、空白じゃないセルは10という結果を出したい
というリクエストに対し、Mookさんは If r.MergeArea.Cells(1, 1).Value <> "" Then というコードで 空白ではないセルをカウントしてますから 結果が10ということは ご希望通りと思いますが。
ぶらっと立ち寄り
例の様に並んでいて、3箇所に入力が有るとき >空白なセルが3つまたは、空白じゃないセルは10という結果を出したい と結果が出れば良いなら 普通に、COUNTA関数やCOUNTBLANK関数で調べられませんか? =COUNTA(A1:A13) =COUNTBLANK(A1:A13)
何が与えられるのかよく分かりませんが。 この場合 A1:A11 の範囲が与えられた時 A11セルはA13セルまで結合されているから 自動的に A1:A13の範囲でカウントしたい って事なのでしょうか?
(HANA)
Sub 結合セル確認()
Dim h101 As Integer
Dim h102 As Integer
Dim h103 As Integer
Dim h104 As Integer
Dim h105 As Integer
Dim h106 As Integer
Dim h107 As Integer
Dim h108 As Integer
Dim h201 As Integer
Dim h202 As Integer
Dim h203 As Integer
Dim h204 As Integer
Dim h205 As Integer
Dim h206 As Integer
Dim h207 As Integer
Dim h208 As Integer
Dim h301 As Integer
Dim h302 As Integer
Dim h303 As Integer
Dim h304 As Integer
Dim h305 As Integer
Dim h306 As Integer
Dim h307 As Integer
Dim h308 As Integer
Dim h401 As Integer
Dim h402 As Integer
Dim h403 As Integer
Dim h404 As Integer
Dim h405 As Integer
Dim h406 As Integer
Dim h407 As Integer
Dim h408 As Integer
Dim h501 As Integer
Dim h502 As Integer
Dim h503 As Integer
Dim h504 As Integer
Dim h505 As Integer
Dim h506 As Integer
Dim h507 As Integer
Dim h508 As Integer
h101 = countMergeA(Range("B3:B50"))
h102 = countMergeA(Range("B55:B102"))
h103 = countMergeA(Range("B107:B154"))
h104 = countMergeA(Range("B159:B206"))
h105 = countMergeA(Range("M3:M50"))
h106 = countMergeA(Range("M55:M102"))
h107 = countMergeA(Range("M107:M154"))
h108 = countMergeA(Range("M159:M206"))
h201 = countMergeA(Range("D3:D50"))
h202 = countMergeA(Range("D55:D102"))
h203 = countMergeA(Range("D107:D154"))
h204 = countMergeA(Range("D159:D206"))
h205 = countMergeA(Range("O3:O50"))
h206 = countMergeA(Range("O55:O102"))
h207 = countMergeA(Range("O107:O154"))
h208 = countMergeA(Range("O159:O206"))
h301 = countMergeA(Range("F3:F50"))
h302 = countMergeA(Range("F55:F102"))
h303 = countMergeA(Range("F107:F154"))
h304 = countMergeA(Range("F159:F206"))
h305 = countMergeA(Range("Q3:Q50"))
h306 = countMergeA(Range("Q55:Q102"))
h307 = countMergeA(Range("Q107:Q154"))
h308 = countMergeA(Range("Q159:Q206"))
h401 = countMergeA(Range("H3:H50"))
h402 = countMergeA(Range("H55:H102"))
h403 = countMergeA(Range("H107:H154"))
h404 = countMergeA(Range("H159:H206"))
h405 = countMergeA(Range("S3:S50"))
h406 = countMergeA(Range("S55:S102"))
h407 = countMergeA(Range("S107:S154"))
h408 = countMergeA(Range("S159:S206"))
h501 = countMergeA(Range("J3:J50"))
h502 = countMergeA(Range("J55:J102"))
h503 = countMergeA(Range("J107:J154"))
h504 = countMergeA(Range("J159:J206"))
h505 = countMergeA(Range("U3:U50"))
h506 = countMergeA(Range("U55:U102"))
h507 = countMergeA(Range("U107:U154"))
h508 = countMergeA(Range("U159:U206"))
Sheets.Add After:=Sheets(Sheets.Count)
Range("A1") = h101 Range("A2") = h102 Range("A3") = h103 Range("A4") = h104 Range("A5") = h105 Range("A6") = h106 Range("A7") = h107 Range("A8") = h108
Range("B1") = h201 Range("B2") = h202 Range("B3") = h203 Range("B4") = h204 Range("B5") = h205 Range("B6") = h206 Range("B7") = h207 Range("B8") = h208
Range("C1") = h301 Range("C2") = h302 Range("C3") = h303 Range("C4") = h304 Range("C5") = h305 Range("C6") = h306 Range("C7") = h307 Range("C8") = h308
Range("D1") = h401 Range("D2") = h402 Range("D3") = h403 Range("D4") = h404 Range("D5") = h405 Range("D6") = h406 Range("D7") = h407 Range("D8") = h408
Range("E1") = h501 Range("E2") = h502 Range("E3") = h503 Range("E4") = h504 Range("E5") = h505 Range("E6") = h506 Range("E7") = h507 Range("E8") = h508
End Sub
変数宣言をされる習慣は良いと思いますが、今回に限っては不要だと思います。 Range("A1") = countMergeA(Range("B3:B50")) のように直接記述すれば済みます。
ですがもともと、ユーザ定義関数はシート上で直接利用できますので、新規シート上で A1 = countMergeA(Sheet1!B3:B50) A2 = countMergeA(Sheet1!B55:B102) A3 = countMergeA(Sheet1!B107:B154) A4 = countMergeA(Sheet1!B159:B206) A5 = countMergeA(Sheet1!M3:M50) A6 = countMergeA(Sheet1!M55:M102) A7 = countMergeA(Sheet1!M107:M154) A8 = countMergeA(Sheet1!M159:M206) と書いて、これをC,E,G,I 列にコピーすれば出ると思います。 (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.