エクセルのあるシート内の「取り消し線が入ったセルの数を数えようとした」んですが、調べてもなかなか出てこなくて、どうやら関数で書式を判断するのは無理なことが判明しました。
その代わりVBAでプログラムを組めばできることが判明したんですが、どのサイトを見てもとても分かりづらく応用が利かなそうなものばかりでした。
ということで僕が自分なりにコードを書いてみたところ上手く動作したので、同じようにお困りの人へ向けて共有しようと思います。
僕の方法を理解すれば「取り消し線」以外にもセルの色やアンダーライン、罫線なども判定することができます。
「特定の書式の数を数える方法」とか「書式を関数で判断する方法」、「色のついたセルの個数を数える関数はある?」とか調べてる人の手助けになると思います!(関数では無理なのでVBAで判定します)
では行きます。
結論
いきなり結論(コード)から書いちゃいますね。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub 取消線判定() Dim a, b a = 3 b = 122 For i = a To b Step 1 If Cells(i, 1).Font.Strikethrough = True Then Cells(i, 28).Value = 1 End If Next End Sub |
簡単な解説と応用(他の書式の判定)
簡単にどんな処理が行われているか解説すると
⇒あったら3行28列目のセルに1を入力
⇒なかったら何もせず次の行(4行1列目のセル)を判定
これをひたすら繰り返します。
「.Font.Strikethrough」ってのが取り消し線がある場合のコードなのでこの部分を例えば「.Font.Size」や「.Font.Underline」に替えればフォントサイズだったり下線の有無を判定することができます。
色の判別も可能
ちなみに「.Interior .Color = 65535」とやれば色の判定も可能です。(これは黄色を調べるコード)
ただ、どの色だと数字がどうなるかはマクロで調べただけなんで規則性は不明です(僕は)。
なので自分で調べるか、またはコメントで頂けたらお答えしますので困っている人はどうぞ。
最後に
今後も疑問に思ったコードだったり作業の効率化になる!と思ったコードは、どんどん調べたり自分で考えたりしてこのブログ記事に残しておこうと思うので、もし気になった方はチェックしてくださいね(*^_^*)
以上です。
コメント