アプリ版:「スタンプのみでお礼する」機能のリリースについて

計算結果が何個か在るのですが、その数値が何番目(どのカウンター)なのか知りたいのです。

max-chi = worksheetfunctin.max(kk1,kk2,kk3,kk4,kk5)
と調べた結果、
表示されたmax-chiがkk1なのか、kk2なのか、、、、、

簡単そうですが、思いつきません。
ズバリの命令が在ればいいのですが、
見つけられませんでした。
※findではダメでした。

宜しくお願いします。

A 回答 (1件)

Sub Test2()


Dim Max_chi As Variant
Dim order As Variant
''A1:A5 でも、個々の値でも、同じです。Max, Match関数は、同じ扱いになります。
Max_chi = WorksheetFunction.Max(Range("A1:A5"))
order = WorksheetFunction.Match(Max_chi, Range("A1:A5"))
MsgBox "最大値: " & Max_chi & " 順序:" & order
End Sub

'関数を使わないなら、このようなスタイルになります。
Sub Testfind()
Dim kk(1 To 5)
Dim i As Long, j As Long, m As Long
Dim MaxVal As Variant
MaxVal = Empty '最初、Empty だから、本来は不要です。

kk(1) = Cells(1, 1).Value
kk(2) = Cells(2, 1).Value
kk(3) = Cells(3, 1).Value
kk(4) = Cells(4, 1).Value
kk(5) = Cells(5, 1).Value

For i = LBound(kk) To UBound(kk)
 kk(i) = Cells(i, 1).Value
Next i
For j = LBound(kk) To UBound(kk)
 If kk(j) > MaxVal Then
  MaxVal = kk(j)
  m = j
 End If
Next j
MsgBox "最大値: " & MaxVal & " 順序:" & m
'念の為、配列の場合の検索をしてみました。
m = Application.Match(MaxVal, kk)
If IsNumeric(m) Then
 MsgBox m
End If
End Sub

'ただし、全部の関数が、同じように配列か使えるとは限りません。使えても、1次元配列のものもあれば、2次元配列まで可能なものもあります。Match関数は、1次元のみのはずです。ちなみに、Transpose関数は、2次元は使えますが、リミットがありますから、VBAでは、思わぬ失敗を招く時があります。
    • good
    • 0
この回答へのお礼

早速有り難うございました。
また、いろいろなサンプルも作っていただき、
お手間をお掛けしました。

関数のmaxを使っているので、matchを使うのが最適ということにしました。
計算結果を配列に入れてmatchで上手く行きました。

お世話になりました。

お礼日時:2018/06/21 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!