Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ссылка на элемент vba массива в формуле - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ссылка на элемент vba массива в формуле (Макросы/Sub)
Ссылка на элемент vba массива в формуле
Mexo Дата: Четверг, 09.11.2017, 06:02 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте! Подскажите как правильно написать формулу для массива "Result" чтобы она работала?
[vba]
Код
Option Explicit
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = [X_1]
X(1, 2) = [X_2]
X(2, 1) = [X_3]
X(2, 2) = [X_4]

Dim Result(1 To 1) As Variant
Result(1) = [=IF(X(1, 1)=4,"XXX",0)]
End Sub
[/vba]
Выдает "Error 2029" из-за этого "X(1, 1)" , а я понятия не имею как обозначить этот элемент в формуле. Заранее благодарю!
К сообщению приложен файл: 8809704.xlsm (15.3 Kb)
 
Ответить
СообщениеЗдравствуйте! Подскажите как правильно написать формулу для массива "Result" чтобы она работала?
[vba]
Код
Option Explicit
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = [X_1]
X(1, 2) = [X_2]
X(2, 1) = [X_3]
X(2, 2) = [X_4]

Dim Result(1 To 1) As Variant
Result(1) = [=IF(X(1, 1)=4,"XXX",0)]
End Sub
[/vba]
Выдает "Error 2029" из-за этого "X(1, 1)" , а я понятия не имею как обозначить этот элемент в формуле. Заранее благодарю!

Автор - Mexo
Дата добавления - 09.11.2017 в 06:02
nilem Дата: Четверг, 09.11.2017, 07:53 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Mexo, привет
так нужно?:
[vba]
Код
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = "X_1"
X(1, 2) = "X_2"
X(2, 1) = "X_3"
X(2, 2) = "X_4"

Dim Result(1 To 1) As Variant
Result(1) = IIf(X(1, 1) = 4, "XXX", 0)

MsgBox Result(1)
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеMexo, привет
так нужно?:
[vba]
Код
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = "X_1"
X(1, 2) = "X_2"
X(2, 1) = "X_3"
X(2, 2) = "X_4"

Dim Result(1 To 1) As Variant
Result(1) = IIf(X(1, 1) = 4, "XXX", 0)

MsgBox Result(1)
End Sub
[/vba]

Автор - nilem
Дата добавления - 09.11.2017 в 07:53
Mexo Дата: Четверг, 09.11.2017, 08:36 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Спасибо, так работает. А как можно вставить элемент "X(1,1)" вместо ссылки на ячейку K43 в эту формулу:
Код
=IFERROR(IF(INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))="5296274|5296274",4,
IF(AND(INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))<>"5296274|5296274",
IF(FIND("5296274",INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))),2)),2,"")),"")

? Помогите пожалуйста!
 
Ответить
СообщениеСпасибо, так работает. А как можно вставить элемент "X(1,1)" вместо ссылки на ячейку K43 в эту формулу:
Код
=IFERROR(IF(INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))="5296274|5296274",4,
IF(AND(INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))<>"5296274|5296274",
IF(FIND("5296274",INDEX(BASE!C:C,MATCH(FR!$C$6&"|"&K43,BASE!$A:$A,0))),2)),2,"")),"")

? Помогите пожалуйста!

Автор - Mexo
Дата добавления - 09.11.2017 в 08:36
Mexo Дата: Четверг, 09.11.2017, 08:40 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Вернее не элемент "X(1,1)", а его значение.
 
Ответить
СообщениеВернее не элемент "X(1,1)", а его значение.

Автор - Mexo
Дата добавления - 09.11.2017 в 08:40
nilem Дата: Четверг, 09.11.2017, 08:47 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Макросом записываете формулу на лист. Так?
если да, то типа такого
[vba]
Код
ПОИСКПОЗ(FR!$C$6&"|"&K43;ОСНОВАНИЕ!$A:$A;0))
[/vba]
будет выглядеть
[vba]
Код
ПОИСКПОЗ(FR!$C$6&"|" & x(1,1) & ";ОСНОВАНИЕ!$A:$A;0))
[/vba]

ИНДЕКС(ОСНОВАНИЕ!C:C - желательно не указывать столбцы целиком


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Четверг, 09.11.2017, 08:50
 
Ответить
СообщениеМакросом записываете формулу на лист. Так?
если да, то типа такого
[vba]
Код
ПОИСКПОЗ(FR!$C$6&"|"&K43;ОСНОВАНИЕ!$A:$A;0))
[/vba]
будет выглядеть
[vba]
Код
ПОИСКПОЗ(FR!$C$6&"|" & x(1,1) & ";ОСНОВАНИЕ!$A:$A;0))
[/vba]

ИНДЕКС(ОСНОВАНИЕ!C:C - желательно не указывать столбцы целиком

Автор - nilem
Дата добавления - 09.11.2017 в 08:47
Mexo Дата: Четверг, 09.11.2017, 09:27 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Спасибо! Буду пробовать.
ИНДЕКС(ОСНОВАНИЕ!C:C - желательно не указывать столбцы целиком

Это из-за скорости обработки? Столбцы целиком указал т.к. это динамический диапазон. Как можно записать в формуле чтобы проверяло не весь столбец "С", а только заполненные строки в нем?
 
Ответить
СообщениеСпасибо! Буду пробовать.
ИНДЕКС(ОСНОВАНИЕ!C:C - желательно не указывать столбцы целиком

Это из-за скорости обработки? Столбцы целиком указал т.к. это динамический диапазон. Как можно записать в формуле чтобы проверяло не весь столбец "С", а только заполненные строки в нем?

Автор - Mexo
Дата добавления - 09.11.2017 в 09:27
Mexo Дата: Четверг, 09.11.2017, 09:38 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Макросом записываете формулу на лист. Так?

Вначале сделал массив с формулами на листе, но мне не понравилась скорость обработки данных. Решил сделать все вычисления в массиве, а на лист чтобы выводился только общий результат. т.к. есть предположения что скорость обработки должна увеличиться.
 
Ответить
Сообщение
Макросом записываете формулу на лист. Так?

Вначале сделал массив с формулами на листе, но мне не понравилась скорость обработки данных. Решил сделать все вычисления в массиве, а на лист чтобы выводился только общий результат. т.к. есть предположения что скорость обработки должна увеличиться.

Автор - Mexo
Дата добавления - 09.11.2017 в 09:38
nilem Дата: Четверг, 09.11.2017, 09:42 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
ну типа
[vba]
Код
dim adr$
adr=Range("C1", Cells(Rows.Count, 3).End(xlUp)).address(,,r1c1)
formula="index(" & adr &",match ...
[/vba]
Мне кажется нереально)
давайте сразу пример


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениену типа
[vba]
Код
dim adr$
adr=Range("C1", Cells(Rows.Count, 3).End(xlUp)).address(,,r1c1)
formula="index(" & adr &",match ...
[/vba]
Мне кажется нереально)
давайте сразу пример

Автор - nilem
Дата добавления - 09.11.2017 в 09:42
nilem Дата: Четверг, 09.11.2017, 09:44 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Решил сделать все вычисления в массиве

Тогда не парьтесь с формулами. Давайте сразу пример. И что нужно посчитать


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
Решил сделать все вычисления в массиве

Тогда не парьтесь с формулами. Давайте сразу пример. И что нужно посчитать

Автор - nilem
Дата добавления - 09.11.2017 в 09:44
Mexo Дата: Четверг, 09.11.2017, 11:19 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Попытался укоротить оригинал в итоге в ячейках с формулами не выводятся значения.
 
Ответить
СообщениеПопытался укоротить оригинал в итоге в ячейках с формулами не выводятся значения.

Автор - Mexo
Дата добавления - 09.11.2017 в 11:19
Mexo Дата: Четверг, 09.11.2017, 11:52 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Получилось только без ссылок. AQ2:AU3 - 9 ячеек с общим результатом.
К сообщению приложен файл: -2-.xlsm (55.9 Kb)
 
Ответить
СообщениеПолучилось только без ссылок. AQ2:AU3 - 9 ячеек с общим результатом.

Автор - Mexo
Дата добавления - 09.11.2017 в 11:52
nilem Дата: Четверг, 09.11.2017, 12:04 | Сообщение № 12
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
я, например, ничего не понял (
может, словами напишете, что нужно получить. Т.е. нарисовать какие-то исходные данные, и какой-то результат, и пояснить, как это должно получаться.


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениея, например, ничего не понял (
может, словами напишете, что нужно получить. Т.е. нарисовать какие-то исходные данные, и какой-то результат, и пояснить, как это должно получаться.

Автор - nilem
Дата добавления - 09.11.2017 в 12:04
Mexo Дата: Четверг, 09.11.2017, 13:51 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Проще показать, написал Вам в личку.
 
Ответить
СообщениеПроще показать, написал Вам в личку.

Автор - Mexo
Дата добавления - 09.11.2017 в 13:51
Pelena Дата: Четверг, 09.11.2017, 15:03 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 19179
Репутация: 4418 ±
Замечаний: ±

Excel 365 & Mac Excel
написал Вам в личку

Это нарушение Правил форума.
Решайте задачу здесь


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
написал Вам в личку

Это нарушение Правил форума.
Решайте задачу здесь

Автор - Pelena
Дата добавления - 09.11.2017 в 15:03
Mexo Дата: Четверг, 09.11.2017, 20:15 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Хорошо, прошу прощения, перечитал п.5
 
Ответить
СообщениеХорошо, прошу прощения, перечитал п.5

Автор - Mexo
Дата добавления - 09.11.2017 в 20:15
Mexo Дата: Пятница, 10.11.2017, 01:45 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
В итоге решил вставить в формулу не элемент, а саму именованную формулу этого элемента.
Типа такого:
[vba]
Код
Option Explicit
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = [X_1]
X(1, 2) = [X_2]
X(2, 1) = [X_3]
X(2, 2) = [X_4]

Dim Result(1 To 1) As Variant
Result(1) = [=IF(X_1=4,"XXX",0)]
End Sub
[/vba]
Так работает.


Сообщение отредактировал Mexo - Пятница, 10.11.2017, 01:47
 
Ответить
СообщениеВ итоге решил вставить в формулу не элемент, а саму именованную формулу этого элемента.
Типа такого:
[vba]
Код
Option Explicit
Sub Test()
Dim X(1 To 2, 1 To 2) As Variant
X(1, 1) = [X_1]
X(1, 2) = [X_2]
X(2, 1) = [X_3]
X(2, 2) = [X_4]

Dim Result(1 To 1) As Variant
Result(1) = [=IF(X_1=4,"XXX",0)]
End Sub
[/vba]
Так работает.

Автор - Mexo
Дата добавления - 10.11.2017 в 01:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ссылка на элемент vba массива в формуле (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!