2017-02-22 32 views
1

У меня есть таблица с данными, аналогичную нижеПолучение ячейки значения ячейки с минимальным значением в диапазоне

 A    B  C  D  E  
1     London NY LA Chicago 
2 Population  11  18 16 12 

У меня есть следующий код, чтобы получить максимальное значение: (Устпешно)

Dim Rng As Range 
Dim Ray 
Dim Max As Integer 
Set Rng = Range(Range("B2"), Range("E2").End(xlUp)) 
Ray = Rng.Value 
Max = Application.Max(Ray) 

Затем, я пытаюсь получить столбец с максимальным значением. Моя цель - получить «C» или C1, чтобы знать, что NY (C1) - это номер с максимальным значением.

Попробую следующее, но он не работает

For Each cell In Rng 
If cell.Value = Max Then 
    MaxAddress = cell.Address 
    Exit For 
End If 
Next cell 

ответ

1

Это что-то с вашим кодом, который должен работать:

Option Explicit 

Public Sub TestMe() 

    Dim Rng   As Range 
    Dim Ray   As Variant 
    Dim MaxValue As Double 
    Dim MaxCell  As Range 
    Dim cell  As Range 

    Set Rng = ActiveSheet.Range(Range("B2"), Range("E2").End(xlUp)) 
    Ray = Rng.value 
    MaxValue = Application.Max(Ray) 

    For Each cell In Rng 
     If cell = MaxValue Then 
      Set MaxCell = cell 
      Exit For 
     End If 
    Next cell 

    Debug.Print MaxCell.Address 
    Debug.Print MaxCell.Column 
    Debug.Print MaxCell.row 

End Sub 

Есть другие способы, вероятно, лучше, чтобы это сделать - например сделайте отдельную функцию, предоставив вам столбец с заданным значением в строке. Это вы могли бы использовать много.

+0

использовать 'find', чтобы посмотреть, где' MaxValue' найден –

+0

@ ShaiRado - хотел вернуть ячейку, чтобы пользователь мог взять адрес, столбец и строку позже. – Vityata

+0

@SamuelMartin - вас приветствуют :) – Vityata

0
Option Explicit 

Sub TestMax() 
    Dim oSheet As Worksheet 
    Dim oRange As Range  
    Dim maxValue As Integer 
    Dim oMaxCell As Range 

    Set oSheet = ActiveSheet 

    Set oRange = oSheet.Range("B2:E2") 

    maxValue = Application.Max(oRange.Value) 

    For Each oMaxCell In oRange.Cells 
     If CInt(oMaxCell.Value) = maxValue Then 
      Exit For 
     End If 
    Next oMaxCell 

    Debug.Print oMaxCell.Column 

End Sub 

В зависимости от других данных, вы не можете работать с целыми числами, хотя

Edit: К сожалению, кто-то быстрее