Excel VBA質問箱 IV

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

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


8451 / 13644 ツリー ←次へ | 前へ→

【33206】最大値を調べる いちご 06/1/5(木) 8:56 質問[未読]
【33207】Re:最大値を調べる ちくたく 06/1/5(木) 9:35 回答[未読]
【33210】Re:最大値を調べる Jaka 06/1/5(木) 10:23 回答[未読]
【33214】Re:最大値を調べる ちくたく 06/1/5(木) 11:31 発言[未読]
【33215】Re:最大値を調べる Jaka 06/1/5(木) 11:48 発言[未読]
【33241】Re:最大値を調べる いちご 06/1/5(木) 17:54 お礼[未読]
【33245】Re:最大値を調べる ichinose 06/1/5(木) 19:17 発言[未読]
【33246】Re:最大値を調べる いちご 06/1/5(木) 19:59 お礼[未読]
【33243】Re:最大値を調べる Kein 06/1/5(木) 18:53 回答[未読]
【33247】Re:最大値を調べる いちご 06/1/5(木) 20:07 お礼[未読]

【33206】最大値を調べる
質問  いちご  - 06/1/5(木) 8:56 -

引用なし
パスワード
   教えて下さい。
   A   B C
1 かけ算 9級 75
2 たし算 9級 45
3 たし算 9級 50
4 たし算 9級 85
5 たし算 8級 60
6 かけ算 9級 30
7 たし算 9級 40
8 たし算 9級 60
9 たし算 8級 66
10 かけ算 9級 75
11 たし算 8級 95
12 かけ算 9級 70


A列は演算,B列は級,C列は点数です。
たし算の9級の最大値を調べるにはどうしたらいいのでしょうか。

【33207】Re:最大値を調べる
回答  ちくたく WEB  - 06/1/5(木) 9:35 -

引用なし
パスワード
   いちご さん
おはようございます。

どうも、いまいちな気がしますが。

Sub test()

  Dim i As Integer
  Dim myArr As Variant
  Dim tmpMax As Integer, myMax As Integer
  
  myArr = Range("A1:C" & Range("C65536").End(xlUp).Row)
  myMax = 0: tmpMax = 0
  
  For i = 1 To UBound(myArr)
    If myArr(i, 1) = "たし算" And myArr(i, 2) = "9級" Then
      tmpMax = myArr(i, 3)
      If myMax < tmpMax Then myMax = tmpMax
    End If
  Next i
  
  MsgBox myMax
  
End Sub

【33210】Re:最大値を調べる
回答  Jaka  - 06/1/5(木) 10:23 -

引用なし
パスワード
   =SUMPRODUCT(MAX((A1:A12="たし算")*(B1:B12="9級")*(C1:C12)))

【33214】Re:最大値を調べる
発言  ちくたく WEB  - 06/1/5(木) 11:31 -

引用なし
パスワード
   Jaka さん。

そんな方法があるんですね、
すごいですね、感服です。
Worksheet関数も勉強しなきゃだめですね。

【33215】Re:最大値を調べる
発言  Jaka  - 06/1/5(木) 11:48 -

引用なし
パスワード
   =MAX((A1:A12="たし算")*(B1:B12="9級")*(C1:C12))
だけで、
Shift+Ctrl を押しながら。Enterでも良いんだけど、
いちいちキー押すの面倒かな?って思ったもので...。

他にも簡単な方法があると思いますよ。

【33241】Re:最大値を調べる
お礼  いちご  - 06/1/5(木) 17:54 -

引用なし
パスワード
   ちくたくさん,Jakaさん ありがとうございます。
お礼が遅くなってすみませんでした。

ちくたくさんの方法でやると,ちゃんと最大値を求めることができました。

JAKAさんの方法を使って,
Sub TEST1()
A = SUMPRODUCT(MAX((A1:A12="たし算")*(B1:B12="9級")*(C1:C12)))
MsgBox A
End Sub
としたのですが,コンパラエラー,構文エラーとなってしまいました。
使用環境は,OSがMeで,ExcelがXPなのですが,…
どこが問題なのでしょうか。

【33243】Re:最大値を調べる
回答  Kein  - 06/1/5(木) 18:53 -

引用なし
パスワード
   AA列を作業列として、数式を埋めて判定する方法です。

Sub MyMax()
  Dim Mx As Long
 
  Range("AA:AA").ClearContents
  On Error Resume Next
  With Range("A1", Range("A65536").End(xlUp)).Offset(, 26)
   .Formula = "=IF(AND($A1=""たし算"",$B1=""9級""),$C1,"""")"
   Mx = WorksheetFunction.Max(.SpecialCells(3, 1))
   .ClearContents
  End With
  If Err.Number = 0 Then MsgBox "最大値は " & Mx
End Sub

【33245】Re:最大値を調べる
発言  ichinose  - 06/1/5(木) 19:17 -

引用なし
パスワード
   こんばんは。
>ちくたくさん,Jakaさん ありがとうございます。
>お礼が遅くなってすみませんでした。
>
>ちくたくさんの方法でやると,ちゃんと最大値を求めることができました。
>
JAkaさんの方法は、セルに直接入力する数式と同じように指定する方法です。

以下のようにVBAで行うなら

>Sub TEST1()
A = [SUMPRODUCT(MAX((A1:A12="たし算")*(B1:B12="9級")*(C1:C12)))]
>MsgBox A
>End Sub

とするか、

Sub Test2()
A = "SUMPRODUCT(MAX((A1:A12=""たし算"")*(B1:B12=""9級"")*(C1:C12)))"
MsgBox application.Evaluate(A)
End Sub

なんてすると解が得られます。

【33246】Re:最大値を調べる
お礼  いちご  - 06/1/5(木) 19:59 -

引用なし
パスワード
   ありがとうございました。
おかげさまで,解決しました。

JAkaさんの方法も、セルに直接入力すると最大値を求めることができました。
活用のはばを広げることができました。

【33247】Re:最大値を調べる
お礼  いちご  - 06/1/5(木) 20:07 -

引用なし
パスワード
   Kein さん ありがとうございました。

最大値を出すことができました。いろいろな方法があるので,びっくりしています。

もっと勉強していきたいと思っています。

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