すいません EXCEL VBAで教えていただきたいことがあります。
A列 B列
1行:野菜 秋物
2行:果物 秋物
3行:穀物 夏物
4行:野菜 夏物
5行:野菜 春物
6行:穀物 秋物
7行:果物 夏物
8行:野菜 秋物
・・・以下300行まで続く
というデータがあるとして、A列が「野菜」、B列が「秋物」に合致する
行の合計個数をカウントするのはどうしたらよろしいんでしょうか。
関数だとデータベース関数を使えば何とかできそうな感じなのですが
VBAだと、どうもいいアイデアが浮かびません。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
300行程度だとどれでもそんなに大きい差(処理時間)はありませんでした。
'=========================================================
Sub 例1()
Dim c1 As String
Dim c2 As String
Dim ans As Long
c1 = "野菜": c2 = "秋物"
With Range("a1", Cells(Rows.Count, "a").End(xlUp)).Resize(, 2)
ans = Evaluate("sumproduct((" & .Columns(1).Address & "=""" & c1 & _
""")*(" & .Columns(2).Address & "=""" & c2 & """))")
MsgBox c1 & "で" & c2 & "の数は " & ans
End With
'私は、この手のことは、大抵これです
End Sub
'=========================================================
Sub 例2()
Dim c1 As String
Dim c2 As String
Dim ans As Long
ans = 0
c1 = "野菜": c2 = "秋物"
With Range("a1", Cells(Rows.Count, "a").End(xlUp)).Resize(, 2)
With .Columns(3)
.Formula = "=if(and(rc[-2]=""" & c1 & _
""",rc[-1]=""" & c2 & """),1,"""")"
If .Rows.Count = 1 And .Cells(1).Value = 1 Then
ans = 1
Else
On Error Resume Next
ans = .SpecialCells(xlCellTypeFormulas, xlNumbers).Count
End If
MsgBox c1 & "で" & c2 & "の数は " & ans
.ClearContents
End With
End With
End Sub
'============================================================
Sub 例3()
Dim c1 As String
Dim c2 As String
Dim crng As Range
Dim ans As Long
ans = 0
c1 = "野菜": c2 = "秋物"
For Each crng In Range("a1", Cells(Rows.Count, "a").End(xlUp))
With crng
If .Value = c1 And .Offset(0, 1).Value = c2 Then ans = ans + 1
End With
Next
MsgBox c1 & "で" & c2 & "の数は " & ans
End Sub
おおっ!できました!ありがとうございます!
こういうやり方があったのですか。
例1の
ans = Evaluate("sumproduct((" & .Columns(1).Address & "=""" & c1 & _
""")*(" & .Columns(2).Address & "=""" & c2 & """))")
のコードが自分ではどうしても作れませんでした。
作っていただいたコードは理解しないといつまで経っても実力が付かないので、とりあえず記載していただいた3つとも全部研究させていただきます。
またわからないことがありましたらよろしくお願いします。
No.3
- 回答日時:
この例題では関数で充分ですが、
VBA初心者で勉強中の方であると想定して敢えてVBAで。
VBAに慣れるまで簡単な命令を使いましょう。
Option Explicit
Private Sub hogehoge()
Dim ANS As Integer
Dim I As Integer
ANS = 0
For I = 1 To 500
If Range("A" & I) = "" Then Exit For
If Range("A" & I) = "野菜" And Range("B" & I) = "秋物" Then
ANS = ANS + 1
End If
Next I
MsgBox "答えは " & ANS
End Sub
'----------------------------------- ここまで
For I = 1 To 500 の500は、300行まで続くとあるので、いくら何でもここまでデータは無いだろう・・・の適当な数字です。
出来ました!ありがとうございます。
If Range("A" & I) = "野菜" And Range("B" & I) = "秋物" Then
ANS = ANS + 1
で出来るということを始めて知りました。
端からCountを使わないと出来ないだろうと決め付けた挙句に
結局暗礁に乗り上げてしまいました。
VBAは始めたばかりでわからないことだらけです。
またよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ダイエット・食事制限 秋にダイエットは損した気分に なりませんか? 夏は暑くて何も支度したくないので 一日一食とか、体温上 1 2022/09/24 16:06
- Visual Basic(VBA) 複数条件でのカウント 3 2022/04/20 23:06
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- 赤ちゃん 離乳食の果物の量について 離乳食後期です 離乳食本には果物を与える場合 果物10g+野菜30gが目安 2 2022/06/10 13:58
- 食べ物・食材 きりたんぽ鍋にお詳しい方に質問です。 5 2023/02/03 10:28
- Excel(エクセル) Xlookupの結果がうまくいきません。(excel2013) 2 2023/06/18 17:32
- 生物学 微生物による有機物の分解 1 2023/07/30 21:21
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えてください!!
-
ハーブソルトを代用できるもの...
-
7文字以上のフルーツをできるだ...
-
スポンジケーキってどのくらい...
-
筍の上の部分が緑色になってい...
-
中黒「・」か読点「、」か?
-
大至急!妊娠初期でイチゴにつ...
-
マンゴーは洗いますか?また洗...
-
スルメを食べた後にみかんを食...
-
ふにゃふにゃになったキウイっ...
-
果物が大嫌いな私、果物代わり...
-
いちごは何故ビニールハウスで...
-
しらたきと吐き気
-
いちじく にんじん さんしょ...
-
河内晩柑と薬の服用
-
強調する表現
-
近年、梨、桃、リンゴがやたら...
-
パイナップル果汁はなぜ泡立ち...
-
煮物こんにゃくの冷凍保存について
-
いちごを1パック買ったのです...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えてください!!
-
7文字以上のフルーツをできるだ...
-
筍の上の部分が緑色になってい...
-
ハーブソルトを代用できるもの...
-
中黒「・」か読点「、」か?
-
10年前のにんにく漬け、食べて...
-
スポンジケーキってどのくらい...
-
Excel MATCH関数で検索範囲内...
-
Excelでの全通りの組み合わせ出...
-
いちごを1パック買ったのです...
-
職場で隣の人についてです。飲...
-
エクセルで数字を入力したら文...
-
Excelの関数 SUBSTITUTEとIF関...
-
しらたきと吐き気
-
煮物こんにゃくの冷凍保存について
-
スーパーで買った1つ300円の梨...
-
「であり」と「であって」の使...
-
エクセル 同名の場合はB列にC...
-
大至急!妊娠初期でイチゴにつ...
-
北海道では、見かけないもの
おすすめ情報