人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: あややん
●カテゴリ:コンピュータ 学習・教育
✍キーワード:ひらがな エクセル コード セル マクロ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●150ポイント

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

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
◎質問者からの返答

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

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

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

例えばQ1だと・・・

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

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

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

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


2 ● SALINGER
●150ポイント

けっして短いコードではありませんが、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)
◎質問者からの返答

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

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

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


3 ● ardarim
●300ポイント ベストアンサー

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

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
◎質問者からの返答

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

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

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

ではではw

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ