Запись в коде VBA вычисления по формуле массива
АННА-ЕАО
Дата: Пятница, 22.02.2013, 13:12 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация:
0
±
Замечаний:
0% ±
Здравствуйте. Подскажите, пожалуйста, можно ли, а главное как, РЕЗУЛЬТАТ вычисления по формуле массива [vba]Код
={МАКС(ЕСЛИ(G3:G21="критерий 1";J3:J21))}
[/vba] m = WorksheetFunction.Max([IF(G3:G21="критерий 1",J3:J21]) Label5.Caption = m поместить на Label не производя самих вычислений на листе. (необходимо найти максимум по критерию). Пример прикладываю.
Здравствуйте. Подскажите, пожалуйста, можно ли, а главное как, РЕЗУЛЬТАТ вычисления по формуле массива [vba]Код
={МАКС(ЕСЛИ(G3:G21="критерий 1";J3:J21))}
[/vba] m = WorksheetFunction.Max([IF(G3:G21="критерий 1",J3:J21]) Label5.Caption = m поместить на Label не производя самих вычислений на листе. (необходимо найти максимум по критерию). Пример прикладываю. АННА-ЕАО
К сообщению приложен файл:
-1.xls
(49.0 Kb)
Сообщение отредактировал АННА-ЕАО - Пятница, 22.02.2013, 13:13
Ответить
Сообщение Здравствуйте. Подскажите, пожалуйста, можно ли, а главное как, РЕЗУЛЬТАТ вычисления по формуле массива [vba]Код
={МАКС(ЕСЛИ(G3:G21="критерий 1";J3:J21))}
[/vba] m = WorksheetFunction.Max([IF(G3:G21="критерий 1",J3:J21]) Label5.Caption = m поместить на Label не производя самих вычислений на листе. (необходимо найти максимум по критерию). Пример прикладываю. Автор - АННА-ЕАО Дата добавления - 22.02.2013 в 13:12
SM
Дата: Пятница, 22.02.2013, 14:50 |
Сообщение № 2
Группа: Друзья
Ранг: Участник
Сообщений: 64
Репутация:
59
±
Замечаний:
0% ±
2003
[vba]Код
m = [MAX(IF(G3:G21="критерий 1",J3:J21))]
[/vba]
[vba]Код
m = [MAX(IF(G3:G21="критерий 1",J3:J21))]
[/vba] SM
Excel изощрён, но не злонамерен
Ответить
Сообщение [vba]Код
m = [MAX(IF(G3:G21="критерий 1",J3:J21))]
[/vba] Автор - SM Дата добавления - 22.02.2013 в 14:50 Ответить
Сообщение БОЛЬШОЕ СПАСИБО !!! всё гениальное просто! А я всю голову сломала С НАСТУПАЮЩИМ !‼ Автор - АННА-ЕАО Дата добавления - 22.02.2013 в 16:00
RAN
Дата: Пятница, 22.02.2013, 17:09 |
Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
А вот меня лично шибко интересует, как это сделать с переменной? [vba]Код
Dim a$ a = "критерий 1"
[/vba] А дальше?
А вот меня лично шибко интересует, как это сделать с переменной? [vba]Код
Dim a$ a = "критерий 1"
[/vba] А дальше? RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение А вот меня лично шибко интересует, как это сделать с переменной? [vba]Код
Dim a$ a = "критерий 1"
[/vba] А дальше? Автор - RAN Дата добавления - 22.02.2013 в 17:09
SM
Дата: Пятница, 22.02.2013, 18:54 |
Сообщение № 5
Группа: Друзья
Ранг: Участник
Сообщений: 64
Репутация:
59
±
Замечаний:
0% ±
2003
Цитата (RAN )
как это сделать с переменной?
В этом случае нельзя использовать оператор =[Текст_формулы], т.к. то, что в квадратных скобках, должно быть текстовой константой. Заменяем скобки на функцию Evaluate(), которая вычисляет вычисляемое . Начало Sub CommandButton1_Click может быть таким: [vba]Код
Private Sub CommandButton1_Click() Dim n, i, m As Integer ' Dim TRng As Range Dim a$ ' ListBox1.Clear ListBox2.Clear ListBox3.Clear ListBox4.Clear '''m = [MAX(IF(G3:G21="критерий 1",J3:J21))] Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) a = "критерий 1" m = Evaluate("MAX(IF(" & TRng.Columns("G").Address & "=""" & a & """," & TRng.Columns("J").Address & "))") Label5.Caption = m
[/vba]
Цитата (RAN )
как это сделать с переменной?
В этом случае нельзя использовать оператор =[Текст_формулы], т.к. то, что в квадратных скобках, должно быть текстовой константой. Заменяем скобки на функцию Evaluate(), которая вычисляет вычисляемое . Начало Sub CommandButton1_Click может быть таким: [vba]Код
Private Sub CommandButton1_Click() Dim n, i, m As Integer ' Dim TRng As Range Dim a$ ' ListBox1.Clear ListBox2.Clear ListBox3.Clear ListBox4.Clear '''m = [MAX(IF(G3:G21="критерий 1",J3:J21))] Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) a = "критерий 1" m = Evaluate("MAX(IF(" & TRng.Columns("G").Address & "=""" & a & """," & TRng.Columns("J").Address & "))") Label5.Caption = m
[/vba]SM
Excel изощрён, но не злонамерен
Ответить
Сообщение Цитата (RAN )
как это сделать с переменной?
В этом случае нельзя использовать оператор =[Текст_формулы], т.к. то, что в квадратных скобках, должно быть текстовой константой. Заменяем скобки на функцию Evaluate(), которая вычисляет вычисляемое . Начало Sub CommandButton1_Click может быть таким: [vba]Код
Private Sub CommandButton1_Click() Dim n, i, m As Integer ' Dim TRng As Range Dim a$ ' ListBox1.Clear ListBox2.Clear ListBox3.Clear ListBox4.Clear '''m = [MAX(IF(G3:G21="критерий 1",J3:J21))] Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) a = "критерий 1" m = Evaluate("MAX(IF(" & TRng.Columns("G").Address & "=""" & a & """," & TRng.Columns("J").Address & "))") Label5.Caption = m
[/vba]Автор - SM Дата добавления - 22.02.2013 в 18:54
RAN
Дата: Пятница, 22.02.2013, 19:00 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Пытал Evaluate, но никак пока освоить не могу.
Пытал Evaluate, но никак пока освоить не могу. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Пытал Evaluate, но никак пока освоить не могу. Автор - RAN Дата добавления - 22.02.2013 в 19:00
SM
Дата: Пятница, 22.02.2013, 19:53 |
Сообщение № 7
Группа: Друзья
Ранг: Участник
Сообщений: 64
Репутация:
59
±
Замечаний:
0% ±
2003
Можно сначала протестировать (не экономя на переменных !), и посмотреть соответствие формулы в Immediate и на листе. [vba]Код
Sub Test1() Const Br As String = """" Dim A1 As String, A2 As String, Criteria As String, F As String Dim TRng As Range Dim m As Integer, a$ ' Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) ' A1 = TRng.Columns("G").Address A2 = TRng.Columns("J").Address a = "критерий 1" Criteria = "=" & Br & a & Br F = "MAX(IF(" & A1 & Criteria & "," & A2 & "))" m = Evaluate(F) ' Debug.Print F Debug.Print m End Sub
[/vba]
Можно сначала протестировать (не экономя на переменных !), и посмотреть соответствие формулы в Immediate и на листе. [vba]Код
Sub Test1() Const Br As String = """" Dim A1 As String, A2 As String, Criteria As String, F As String Dim TRng As Range Dim m As Integer, a$ ' Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) ' A1 = TRng.Columns("G").Address A2 = TRng.Columns("J").Address a = "критерий 1" Criteria = "=" & Br & a & Br F = "MAX(IF(" & A1 & Criteria & "," & A2 & "))" m = Evaluate(F) ' Debug.Print F Debug.Print m End Sub
[/vba] SM
Excel изощрён, но не злонамерен
Сообщение отредактировал SM - Пятница, 22.02.2013, 19:58
Ответить
Сообщение Можно сначала протестировать (не экономя на переменных !), и посмотреть соответствие формулы в Immediate и на листе. [vba]Код
Sub Test1() Const Br As String = """" Dim A1 As String, A2 As String, Criteria As String, F As String Dim TRng As Range Dim m As Integer, a$ ' Set TRng = Range("A1").CurrentRegion Set TRng = Range(TRng.Rows(3), TRng.Rows(TRng.Rows.Count)) ' A1 = TRng.Columns("G").Address A2 = TRng.Columns("J").Address a = "критерий 1" Criteria = "=" & Br & a & Br F = "MAX(IF(" & A1 & Criteria & "," & A2 & "))" m = Evaluate(F) ' Debug.Print F Debug.Print m End Sub
[/vba] Автор - SM Дата добавления - 22.02.2013 в 19:53