|
かおりんさん、みなさんこんにちは。
A B C D E
1 名前 国語 数学 地理 物理
2 佐藤 90 98 77 69
3 吉田 70 50 58 75
4 田中 68 47 93 36
5 上田 99 100 78 96
6 吉岡 84 75 66 70
7 佐藤 66 89 50 100
8
9 名前 国語 数学 地理 物理
10 佐藤 1.
11
12 結果 2.
13
14 名前 国語 数学 地理 物理 数学
15 佐藤 3. 4.
16
72 結果 5.
数学が90点以上の佐藤さんの国語の点数を表示するには、
1. のセルに入力する値は = ">=" & 90
2.のセルには =DSUM(A1:E7,"国語",A9:E10)とした場合
結果として90が返されると思います。
数学が80点以上90点未満の佐藤さんの国語の点数を表示するには、
3. のセルに入力する値は = ">=" & 80
4. のセルに入力する値は = "<" & 90
5.のセルには =DSUM(A1:E7,"国語",A4:E15)とした場合
結果として66が返されると思います。
ここで、1.,3.,4.に入れた値ですが、 ">=" & 90と別けているのには理由があります。
">=" ← 文字列型です。 90 ← 整数型です。
C2:C7 に入力された型と同じ型で指定しないと一致するデータは抽出しません。
= ">=" & 90
↑ C2:C7が数値型の場合。
= ">=90"
↑ C2:C7が文字列型の場合。
この様になりますので、データベース内のデータの型にあわせた形で条件は指定する事が必要になります。
DSUM使うという事は数値型なのだと思います。
M6の値を変化させる場合は、
WITH SHEETS("SHEET1") 'ここはシート名に変えて下さい。
WITH .Range("M6")
If Clng(.Value) = 10 Then
.Value = "=" & Chr(34) & ">=" & Chr(34) & "&" & 10
ElseIf Clng(.Value) = 19 Then
.Value = "=" & Chr(34) & "<=" & Chr(34) & "&" & 19
End If
End With
End With
これで結果出てこないですか?
仮にデータベース内が文字列型の場合
WITH SHEETS("SHEET1") 'ここはシート名に変えて下さい。
WITH .Range("M6")
If Clng(.Value) = 10 Then
.Value = ">=10"
ElseIf Clng(.Value) = 19 Then
.Value = "<=19"
End If
End With
End With
となると思いますが。
上記どちらかで実行できませんか?
|
|