Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10122 / 13646 ツリー ←次へ | 前へ→

【23283】DSUM設定で・・・ かおりん 05/3/18(金) 10:46 質問[未読]
【23292】Re:DSUM設定で・・・ kazu 05/3/18(金) 13:15 発言[未読]
【23295】Re:DSUM設定で・・・ かおりん 05/3/18(金) 13:28 質問[未読]
【23336】Re:DSUM設定で・・・ ichinose 05/3/18(金) 19:15 発言[未読]
【23406】Re:DSUM設定で・・・ かおりん 05/3/22(火) 10:29 質問[未読]
【23337】Re:DSUM設定で・・・ kazu 05/3/18(金) 19:20 発言[未読]
【23405】Re:DSUM設定で・・・ かおりん 05/3/22(火) 10:28 質問[未読]
【23414】Re:DSUM設定で・・・ kazu 05/3/22(火) 12:54 発言[未読]
【23589】Re:DSUM設定で・・・ かおりん 05/3/29(火) 12:00 お礼[未読]
【23407】Re:DSUM設定で・・・ G-Luck 05/3/22(火) 10:41 発言[未読]
【23408】Re:DSUM設定で・・・ かおりん 05/3/22(火) 11:09 質問[未読]
【23410】Re:DSUM設定で・・・ かおりん 05/3/22(火) 11:14 質問[未読]
【23413】Re:DSUM設定で・・・ G-Luck 05/3/22(火) 11:31 発言[未読]

【23283】DSUM設定で・・・
質問  かおりん  - 05/3/18(金) 10:46 -

引用なし
パスワード
   .Range("M6").Value = x  
     If x = 10 Then
     .Range("M6").Value = x & ">="
      ElseIf x = 19 Then
     .Range("M6").Value = x & "<="
End If
 M6の範囲をxとして10以上 19以下を設定したつもりなんだけど
どうも認識してくれない!19以下、10以下を探してくれないんです!
どうしてどうして???

【23292】Re:DSUM設定で・・・
発言  kazu  - 05/3/18(金) 13:15 -

引用なし
パスワード
   ▼かおりん さん:

イマイチ何がしたいのかつかみきれていないので
↓のソースの動作を書いておきますね。

何がしたいのかが解れば解決策もあるとは思いますが・・・。
(もしかして、DSUMの検索条件範囲に 10>= 又は 19<= を設定したいという事??)

セルM6に x を書き出す
xが10だった場合   セルM6に 10>= を書き出す
xが19だった場合   セルM6に 19<= を書き出す
xが上記以外の場合 何にもしない


> .Range("M6").Value = x  
>     If x = 10 Then
>     .Range("M6").Value = x & ">="
>      ElseIf x = 19 Then
>     .Range("M6").Value = x & "<="
> End If
> M6の範囲をxとして10以上 19以下を設定したつもりなんだけど
>どうも認識してくれない!19以下、10以下を探してくれないんです!
>どうしてどうして???

【23295】Re:DSUM設定で・・・
質問  かおりん  - 05/3/18(金) 13:28 -

引用なし
パスワード
   ▼kazu さん:
 説明下手ですみません!
 その通りです。
 
 解決方法ありますか?

【23336】Re:DSUM設定で・・・
発言  ichinose  - 05/3/18(金) 19:15 -

引用なし
パスワード
   ▼かおりん さん、kazuさん、こんばんは。

> .Range("M6").Value = x  
>     If x = 10 Then
>       .Range("M6").Value = ">=" & x
>     ElseIf x = 19 Then
       .Range("M6").Value = "<=" & x
>      End If

逆ではないですか?

> M6の範囲をxとして10以上 19以下を設定したつもりなんだけど
>どうも認識してくれない!19以下、10以下を探してくれないんです!
>どうしてどうして???

【23337】Re:DSUM設定で・・・
発言  kazu  - 05/3/18(金) 19:20 -

引用なし
パスワード
   ▼かおりん さん:

以下で試してみて下さい。

    WITH .Range("M6")
     If .Value <= 10 Then
       .Value = "=" & Chr(34) & ">=" & Chr(34) & "&" & 10
     ElseIf .Value >= 19 Then
       .Range("M6").Value = "=" & Chr(34) & "<=" & Chr(34) & "&" & 19
     End If
    End With

【23405】Re:DSUM設定で・・・
質問  かおりん  - 05/3/22(火) 10:28 -

引用なし
パスワード
   ▼kazu さん:
 お返事ありがとう!!さっそくやってみたところ
 「オブジェクトはこのプロパティまたはメソッドに
  サポートしていません。」てでちゃう!!
 何ででしょうか・・・・・・??
 いつも 返信ありがとうございますっ☆

【23406】Re:DSUM設定で・・・
質問  かおりん  - 05/3/22(火) 10:29 -

引用なし
パスワード
   ▼ichinose さん:
 おはようございます☆
>> .Range("M6").Value = x  
>>     If x = 10 Then
>>       .Range("M6").Value = ">=" & x
>>     ElseIf x = 19 Then
>       .Range("M6").Value = "<=" & x
>>      End If
>
>逆ではないですか?
 逆っていうと・・・.Range("M6").Value =x & "<="
 ってことですか?!

【23407】Re:DSUM設定で・・・
発言  G-Luck  - 05/3/22(火) 10:41 -

引用なし
パスワード
   ▼かおりん さん:

' .Range("M6").Value = x  
 x = .Range("M6").Value
>     If x = 10 Then
>     .Range("M6").Value = x & ">="
>      ElseIf x = 19 Then
>     .Range("M6").Value = x & "<="
> End If
> M6の範囲をxとして10以上 19以下を設定したつもりなんだけど
>どうも認識してくれない!19以下、10以下を探してくれないんです!
>どうしてどうして???

代入の式が反対ということではなくて?
上記コードを囲むように、With 〜〜がありますよね?

【23408】Re:DSUM設定で・・・
質問  かおりん  - 05/3/22(火) 11:09 -

引用なし
パスワード
   ▼G-Luck さん:

>' .Range("M6").Value = x  
> x = .Range("M6").Value
>
>代入の式が反対ということではなくて?
>上記コードを囲むように、With 〜〜がありますよね?

はい!あります!
ってことは
>' .Range("M6").Value = x  
> x = .Range("M6").Value
に治せばいいのかなぁ?

【23410】Re:DSUM設定で・・・
質問  かおりん  - 05/3/22(火) 11:14 -

引用なし
パスワード
   ▼G-Luck さん:
またまたおはようございます☆
     If x = 10 Then
     x & ">="=.Range("M6").Value
      ElseIf x = 19 Then
     x & "<="=.Range("M6").Value

ってするとコンパイルエラーになっちゃう!!

【23413】Re:DSUM設定で・・・
発言  G-Luck  - 05/3/22(火) 11:31 -

引用なし
パスワード
   ▼かおりん さん:

代入は、
左辺 = 右辺
となっている場合、
「左辺に右辺を代入」となります。

今回の場合は

x = .Range("M6").Value
'x に .Range("M6")の.Value を代入
>     If x = 10 Then
     'x と 10 を比較して、同じなら True
>     .Range("M6").Value = x & ">="
     '.Range("M6")のValueに x & ">=" を代入
>      ElseIf x = 19 Then
>     .Range("M6").Value = x & "<="
>End If

わかります?

【23414】Re:DSUM設定で・・・
発言  kazu  - 05/3/22(火) 12:54 -

引用なし
パスワード
   かおりんさん、みなさんこんにちは。

    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

となると思いますが。

上記どちらかで実行できませんか?

【23589】Re:DSUM設定で・・・
お礼  かおりん  - 05/3/29(火) 12:00 -

引用なし
パスワード
   おそくなりましたが!ありがとうございました☆なんとかできました!!まだまだ勉強が足りないなと痛感しました・・・ 何度もわからないところを教えていただいて本当にありがとうございました!!

10122 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free