エクセルマクロに関する質問です。合計300P程度(最大貢献者には150P以上)を予定しております。


Columns("A:A")に、ひらがなが適当に書かれていたとします。
その、Columns("A:A")の中に・・・

Q1・『あ』一文字だけのセルは何個あるか?
Q2・『あ』が『含まれている』セルは何個あるか?
Q3・2番目の『あ』一文字だけのRowは何か?
Q4・2番目の『含まれている』セルのRowは何か?
Q5・最後の『あ』一文字だけのRowは何か?

を、調べるには、それぞれどんなコードを書けばいいんでしょう??
…意味解りますかね?
とりあえず。ご回答お待ちしておりまーす!

回答の条件
  • 1人5回まで
  • 登録:2007/12/18 13:48:35
  • 終了:2007/12/22 05:12:55

ベストアンサー

id:ardarim No.3

ardarim回答回数892ベストアンサー獲得回数1422007/12/19 22:53:32

ポイント300pt

回答済みのものもありますが、どうぞ

Sub test()

    MsgBox "Q1=" & WorksheetFunction.CountIf(Columns(1), "あ")
    MsgBox "Q2=" & WorksheetFunction.CountIf(Columns(1), "*あ*")
    MsgBox "Q3=" & Columns(1).Find("あ", Columns(1).Find("あ", , , xlWhole), , xlWhole).Row
    MsgBox "Q4=" & Columns(1).Find("あ", Columns(1).Find("あ", , , xlPart), , xlPart).Row
    MsgBox "Q5=" & Columns(1).Find("あ", , , xlWhole, , xlPrevious).Row

End Sub
id:gsjapan

おー希望通りの回答です。

解決できて嬉しすぎるので300p受け取って下さい♪

ちなみにもう一つ追加で質問出しましたので、可能でしたらそちらもヨロシクお願いします!

ではではw

2007/12/22 05:12:21

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/12/18 15:24:16

ポイント150pt

こんな感じでどうでしょうか。

Sub Macro()
    Dim i As Long
    Dim count1 As Long
    Dim count2 As Long
    Dim count3 As Long
    Dim count4 As Long
    Dim count5 As Long
    
    count1 = 0
    count2 = 0
    count3 = 0
    count4 = 0
    count5 = 0
    
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1).Value = "あ" Then
            count1 = count1 + 1
            count5 = i
            If count1 = 2 Then
                count3 = i
            End If
        End If
        If InStr(Cells(i, 1).Value, "あ") > 0 Then
            count2 = count2 + 1
            If count2 = 2 Then
                count4 = i
            End If
        End If
    Next i
    MsgBox "『あ』一文字だけのセルは" & count1 & "個"
    
    MsgBox "『あ』が『含まれている』セルは" & count2 & "個"
    
    MsgBox "2番目の『あ』一文字だけのRowは" & count3 & "行目"
    
    MsgBox "2番目の『含まれている』セルのRowは" & count4 & "行目"
    
    MsgBox "最後の『あ』一文字だけのRowは" & count5 & "行目"
End Sub
id:gsjapan

全部正解でした。ありがとうございます♪(終了後150Pお送りシマス!)

ついでに質問なんですが、

各それぞれの問いに対して、できるだけ短いコードで答えが出せる方法を教えて下さい。

例えばQ1だと・・・

MsgBox "Q1の回答=" & WorksheetFunction.CountIf(Columns("A:A"), "あ")

みたいな感じ、1~3行くらいで答えが出せると嬉しいです。

解るものだけでも構いませんので・・・

それではご回答。お待ちしておりまーす!

2007/12/18 16:20:04
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692007/12/18 19:02:30

ポイント150pt

けっして短いコードではありませんが、1行です。

Q3

MsgBox "Q3の回答=" & WorksheetFunction.Match("あ", Columns("A:A"), 0) + WorksheetFunction.Match("あ", Range("A" & WorksheetFunction.Match("あ", Columns("A:A"), 0) + 1 & ":A65536"), 0)

Q4

MsgBox "Q4の回答=" & WorksheetFunction.Match("*あ*", Columns("A:A"), 0) + WorksheetFunction.Match("*あ*", Range("A" & WorksheetFunction.Match("*あ*", Columns("A:A"), 0) + 1 & ":A65536"), 0)
id:gsjapan

なるほどこういう書き方もあるんですね。勉強になります。(終了後+50+50Pお送りシマス)

もうなさそうな雰囲気ですが、一応もう2日ほど回答の方受け付けてみます。

終了まで今しばらくお待ちくださいませ…

2007/12/19 22:29:21
id:ardarim No.3

ardarim回答回数892ベストアンサー獲得回数1422007/12/19 22:53:32ここでベストアンサー

ポイント300pt

回答済みのものもありますが、どうぞ

Sub test()

    MsgBox "Q1=" & WorksheetFunction.CountIf(Columns(1), "あ")
    MsgBox "Q2=" & WorksheetFunction.CountIf(Columns(1), "*あ*")
    MsgBox "Q3=" & Columns(1).Find("あ", Columns(1).Find("あ", , , xlWhole), , xlWhole).Row
    MsgBox "Q4=" & Columns(1).Find("あ", Columns(1).Find("あ", , , xlPart), , xlPart).Row
    MsgBox "Q5=" & Columns(1).Find("あ", , , xlWhole, , xlPrevious).Row

End Sub
id:gsjapan

おー希望通りの回答です。

解決できて嬉しすぎるので300p受け取って下さい♪

ちなみにもう一つ追加で質問出しましたので、可能でしたらそちらもヨロシクお願いします!

ではではw

2007/12/22 05:12:21
  • id:SALINGER
    Q2だけなのでコメントで。
    ワイルドカードを使い。
    MsgBox "Q2の回答=" & WorksheetFunction.CountIf(Columns("A:A"), "*あ*")
  • id:gsjapan
    こちらにも回答戴けてたんですねw
    これも正常に動きました。何度もありがとうございます。上のに+50Pしておきマス♪

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません