2016-10-26 7 views
1

私はExcelでマクロを書く過程にあり、範囲内の最大値に関連付けられた文字列またはテキストを取得する必要があります。VBA - 範囲内の最大値に関連付けられた文字列を取得

範囲は次のようになります。

A | B
CR1 | 2.33
CR2 | 5.1
CR3 | 10.0
CR4 | 3.8

私は列BでMAX値を見つけることができましたが、今は列Aに関連する文字列が必要です。この場合、B3(10.0)を指定すると最大値ですが、 CR3 '。

だから、最大値を引っ張るための私のコードは次のとおりです。

Set myRange = Application.InputBox(_ 
prompt:="Please select the Range.", Title:="Graph Range", Type:=8) 
highestNum = Application.WorksheetFunction.Max(myRange) 

私は、列Aの関連する文字列を取得するために何ができますか? .Addressを使用しようとしましたが、それはどこでも私を得ていません。

ありがとうございます!



!!!!!!!編集/更新 - 解決済み:!!!!!!!

もう1人の提出者が示唆したように、私はinded + Matchを使う必要がありました。ソリューションについては以下を参照してください。

Set myRange = Application.InputBox(_ 
prompt:="Please select the Primary KPI 'Lift' Data to Graph.", Title:="Graph Range", Type:=8) 

Set rngColumn2 = myRange.Areas(2) 

highestNum = Application.WorksheetFunction.Max(myRange) 

test = Application.WorksheetFunction.Index(myRange, Application.WorksheetFunction.Match(highestNum, rngColumn2, 1), 1) 

答えて

1

index(Match,Match)機能が必要です。 Bの中で一番高い数字を見てAを返します。

+1

これは私の正しい道を導く。詳細は私の編集ポストを参照してください。 – user2828701

+0

ありがとうございます。 – Vityata

2

Range.Find()を使うと、最大値が見つかったセルを返すことができます。

が続いて左に直接セルから値を返すためにオフセットを使用します。

Dim mtch As Range 
Set myrange = Application.InputBox(_ 
prompt:="Please select the Range.", Title:="Graph Range", Type:=8) 
highestNum = Application.WorksheetFunction.Max(myrange) 
Set mtch = myrange.Find(highestNum) 
Debug.Print mtch.Offset(, -1).Value 

編集

あなたが丸め/浮動小数点問題が発生しているようです。

Dim mtch As Range 
Dim highestNum As Double 
Dim t As Double 
Dim myrange As Range 
Set myrange = Application.InputBox(_ 
prompt:="Please select the Range.", Title:="Graph Range", Type:=8) 
highestNum = Application.WorksheetFunction.Max(myrange) 
t = Range("B3").Value 
r = t = highestNum 
For Each mtch In myrange 
    t = mtch.Value 
    If t = highestNum Then 
     Debug.Print mtch.Offset(, -1).Value 
     Exit For 
    End If 
Next mtch 
+0

「オブジェクト変数またはブロック変数が設定されていません」というメッセージが表示される理由は何ですか? – user2828701

+0

どの行にありますか?エラー時のhighestNumの値は何ですか? –

+0

debug.Print Line。 highestNumの値は0.0611です...私の実際のデータセットで最高の値になります。 highestNumは、それが役立つ場合はdoubleに設定されます。 – user2828701

0

ちょうどスコットの溶液で少しプレイする:

With Application.InputBox(prompt:="Please select the Range.", Title:="Graph Range", Type:=8) 
    Debug.Print Cells.Find(Application.WorksheetFunction.Max(.Cells)).Offset(, -1).Value 
End With 
For Eachループに変更し、丸めが同じであるので、別の二重に各値をロードする必要があることに対処するために、
関連する問題