Excel VBA質問箱 IV

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

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


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

【34355】A1からA200までの値 超1 06/2/1(水) 9:52 質問[未読]
【34361】Re:A1からA200までの値 じゅん 06/2/1(水) 11:00 回答[未読]
【34362】Re:A1からA200までの値 Statis 06/2/1(水) 11:13 回答[未読]
【34371】Re:A1からA200までの値 ichinose 06/2/1(水) 12:30 発言[未読]
【34384】Re:A1からA200までの値 超1 06/2/1(水) 19:26 質問[未読]
【34385】Re:A1からA200までの値 ichinose 06/2/1(水) 19:36 発言[未読]
【34386】Re:A1からA200までの値 超1 06/2/1(水) 19:57 質問[未読]
【34388】Re:A1からA200までの値 超1 06/2/1(水) 20:22 質問[未読]
【34391】Re:A1からA200までの値 ichinose 06/2/1(水) 20:54 発言[未読]
【34392】Re:A1からA200までの値 超1 06/2/1(水) 21:03 発言[未読]
【34395】Re:A1からA200までの値 ichinose 06/2/1(水) 21:31 発言[未読]

【34355】A1からA200までの値
質問  超1  - 06/2/1(水) 9:52 -

引用なし
パスワード
   A1からA200までの値があったとき、
その中で下から(A200から)数えて最初にMAXになった
値を取得したいのですけど、どうしたらよいでしょうか?
そしてそのMAXがどの行にあるかも調べたいです。
どうやったらできますか?

【34361】Re:A1からA200までの値
回答  じゅん  - 06/2/1(水) 11:00 -

引用なし
パスワード
   ▼超1 さん:
こんにちは。
(まずは)おっしゃった通り作成してみました。

Public Sub subCheckMax()
  Dim i As Integer
  Dim lMax As Long
  
  lMax = Application.WorksheetFunction.Max(Range("A1:A200").Value)
  For i = 200 To 1 Step -1
    If Cells(i, "A").Value = lMax Then
      MsgBox "最大値:" & Cells(i, "A").Value & Chr(10) & _
          "行数:" & Cells(i, "A").Row
      
    End If
  Next i
End Sub

試してみて下さい。

【34362】Re:A1からA200までの値
回答  Statis  - 06/2/1(水) 11:13 -

引用なし
パスワード
   ▼超1 さん:
こんにちは

>A1からA200までの値があったとき、
>その中で下から(A200から)数えて最初にMAXになった
>値を取得したいのですけど、どうしたらよいでしょうか?
>そしてそのMAXがどの行にあるかも調べたいです。
>どうやったらできますか?

こんな感じです。

Sub test()

With Application
   MsgBox .Match(.Max(Range("A1:A200")), Range("A1:A200"), 0)
End With

End Sub

【34371】Re:A1からA200までの値
発言  ichinose  - 06/2/1(水) 12:30 -

引用なし
パスワード
   ▼超1 さん:
こんにちは。

>A1からA200までの値があったとき、
>その中で下から(A200から)数えて最初にMAXになった
>値を取得したいのですけど、どうしたらよいでしょうか?
>そしてそのMAXがどの行にあるかも調べたいです。
>どうやったらできますか?

新規ブックの標準モジュールで
試してみてください。サンプルデータもコードで用意しますから試してみてね


'=======================================================
Sub test()
  Dim radd As String
  With Range("a1:a200")
    .Formula = "=int(rand()*200)+1"
    .Value = .Value
  'ここまでは、サンプルデータ作成
    radd = .Address
    MsgBox "最大値 : " & Application.Max(.Cells)
    MsgBox "最大値の最大行 : " & Evaluate("max(if(" & radd & "=max(" & radd & "),row(" _
                            & radd & ")))")
    '  max(if($A$1:$A$200=max($A$1:$A$200),row($A$1:$A$200)))  ↑こんな数式を評価します
    End With
End Sub


確認してみてください

【34384】Re:A1からA200までの値
質問  超1  - 06/2/1(水) 19:26 -

引用なし
パスワード
   みなさん返信ありがとうございます。
これは具体的にどのシートってどのシートと
subプロシージャーでつかいたいので。
具体的にシートをしていするになどうしたらいのでしょうか?
実際にrangeの前にWorksheets(3).Range
などやってみましたが、まともに動かないようでした。
ちょっと時間がないので取り急ぎきかせてもらいました♪

【34385】Re:A1からA200までの値
発言  ichinose  - 06/2/1(水) 19:36 -

引用なし
パスワード
   ▼超1 さん:
こんばんは。

アクティブなシート以外でも動作させるには、

'==============================================
Sub test()
  Dim radd As String
  With Worksheets("sheet2").Range("a1:a200")
'           ↑ここにシート名を指定する
'*******************************************************
    .Formula = "=int(rand()*200)+1"
    .Value = .Value
  'ここまでは、サンプルデータ作成 ↑この2行は実際は要らない
'********************************************************
    radd = .Address(, , , True)
    MsgBox "最大値 : " & Application.Max(.Cells)
    MsgBox "最大値の最大行 : " & Evaluate("max(if(" & radd & "=max(" & radd & "),row(" _
                            & radd & ")))")
    '  max(if($A$1:$A$200=max($A$1:$A$200),row($A$1:$A$200)))  ↑こんな数式を評価します
    End With
End Sub

これで試してみて下さい

【34386】Re:A1からA200までの値
質問  超1  - 06/2/1(水) 19:57 -

引用なし
パスワード
   ▼ichinose さん:
なぜ失敗するのかなんとなくわかりました。
ichinoseさんのコードで正しいのですが、
僕のシートは色分けしているのですつまり値以外の情報が
入っています。これを実行したとき
バリューだけのときはうまく動きましたが、
色分けしているセルでは動きませんでした。
色を付けているセルでも正しく動作する方法はないものですか?
たびたびお手数ですがよろしくお願いします。

【34388】Re:A1からA200までの値
質問  超1  - 06/2/1(水) 20:22 -

引用なし
パスワード
   ▼ichinose さん:
失敗する理由に色分けしているからと上記でかきましたが、
色分けでなく何かしらのデータがセルの中に書き込まれていると反応
しないみたいです。
こういう現象が起こる原因に心当たりはないですか?

【34391】Re:A1からA200までの値
発言  ichinose  - 06/2/1(水) 20:54 -

引用なし
パスワード
   ▼超1 さん:


>失敗する理由に色分けしているからと上記でかきましたが、
>色分けでなく何かしらのデータがセルの中に書き込まれていると反応
>しないみたいです。
>こういう現象が起こる原因に心当たりはないですか?
わかりません。
せっかくその現象にめぐり合えたのですから、
正常に動作しないときのデータ例を記述してみて下さい。
そのときは、A1:A10ぐらいの範囲で
正常動作しないデータを具体的に記述してください。

【34392】Re:A1からA200までの値
発言  超1  - 06/2/1(水) 21:03 -

引用なし
パスワード
   ▼ichinose さん:
それはできません。
原因が具体的に分からない私が
書いてももチンぷんかんぷんになると思いますが。

【34395】Re:A1からA200までの値
発言  ichinose  - 06/2/1(水) 21:31 -

引用なし
パスワード
   ▼超1 さん:
>それはできません。
>原因が具体的に分からない私が
>書いてももチンぷんかんぷんになると思いますが。
そんなことはありません。
だって、ご自分で
>色分けでなく何かしらのデータがセルの中に書き込まれていると反応
>しないみたいです。
とおっしゃっています。

この何かしらのデータって具体的には何ですか?

私には、これだけではわかりません。
超1 さんには、正常に作動するデータと
しないデータを見ることが出来ていますよね。
正常作動するデータと異常作動するデータの違いを
見つけるしかないんです。

ですから、異常動作するデータを記述してくださいと
申し上げています。

私は、コードを提示しました。
その違いを見つけるのは(あるいは、違いを出来る限り
詳しく記述する)超1 さんだと思っています。

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