• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 下線の付いた文字をカウントしたい)

エクセル下線の付いた文字をカウントする方法

このQ&Aのポイント
  • エクセルで下線の付いたアルファベットをカウントしたい方法を知りました。
  • IsNumericの部分を変更することで、下線の付いた文字をカウントすることが可能です。
  • 下線の付いた数字をカウントするマクロを使うことで、目的のカウントを行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 元にしようとされている If IsNumeric(c) And c.Font.Underline = xlUnderlineStyleSingle Then sumUnderline = sumUnderline + c というVBAは、 >下線の付いた【数字】をカウントする方法 ではなく、下線の付いた"【数字】の合計"を求める方法になっていますが、質問者様の仰る >【アルファベット】をカウント とは、どの様なカウントの仕方の事を意味しておられるのでしょうか?  もしかしますと、セルの書式設定で文字に下線が引かれていて、尚且つ、セルに入力されている文字列の中に半角か全角のアルファベットが1文字でも含まれている文字列データーが入力されている"セルの個数"をカウントしたいという事なのでしょうか?  もしそうであれば、 IsNumeric(c) の部分を例えば StrConv(c, vbLowerCase + vbNarrow) Like "*[a-z]*" に置き換えて、尚且つ sumUnderline = sumUnderline + c の部分を sumUnderline = sumUnderline + 1 に置き換えて、 If StrConv(c, vbLowerCase + vbNarrow) Like "*[a-z]*" And c.Font.Underline = xlUnderlineStyleSingle Then sumUnderline = sumUnderline + 1 の様にされると良いと思います。

meganekosan3377
質問者

お礼

早々のご回答ありがとうございました。 >下線の付いた"【数字】の合計"を求める方法になっています。 なるほど!そうだったのですね! 仰る通り、下線付きのアルファベットが入力されている個数をカウントしたかったのです。 教えていただいた通り、書き変えてみたら出来ました!! 本当にありがとうございました☆

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> 下線の付いたアルファベットの個数だけをカウントしたい No2でできたという事はセルの個数で良かったのでしょうか… とりあえず文字数としたら Function SUMALPHAUL(myRng As Range) As Variant Dim i As Integer Dim c As Range Dim CheckStr As String Application.Volatile For Each c In Intersect(myRng, ActiveSheet.UsedRange) CheckStr = StrConv(c.Value, vbNarrow) For i = 1 To Len(CheckStr) If Mid(CheckStr, i, 1) Like "[A-z]" = True And _ c.Characters(Start:=i, Length:=1).Font.Underline = xlUnderlineStyleSingle Then SUMALPHAUL = SUMALPHAUL + 1 End If Next i Next End Function

meganekosan3377
質問者

お礼

度々ご回答ありがとうございます。 出来ました!色々な方法があるのですね~!! みなさん本当にすごい! またぜひ教えて下さい☆ありがとうございました!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以下のコードでいけると思います。 Function SUMALPHA(myRng As Range) As Variant Dim i As Integer Dim c As Range Dim CheckStr As String Application.Volatile For Each c In Intersect(myRng, ActiveSheet.UsedRange) CheckStr = StrConv(c.Value, vbNarrow) For i = 1 To Len(CheckStr) If Mid(CheckStr, i, 1) Like "[A-z]" = True Then SUMALPHA = SUMALPHA + 1 End If Next i Next End Function

meganekosan3377
質問者

お礼

いつもご回答ありがとうございます! すみません…私の質問の仕方が悪かったですね…。 普通のアルファベットと、書式設定で下線をつけたアルファベットがあって、下線の付いたアルファベットの個数だけをカウントしたいと思っています。 教えていただいたものを打ち込んでみたのですが、下線の付いていないアルファベットの個数も一緒にカウントされてしまいました。 下線の付いたアルファベットのみで絞り込む事は出来ますでしょうか??

関連するQ&A