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

Вход

Регистрация

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

 

= Мир MS Excel/Как ввести формулу массива, длиной >256 знаков через VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как ввести формулу массива, длиной >256 знаков через VBA (Макросы/Sub)
Как ввести формулу массива, длиной >256 знаков через VBA
adamm1603 Дата: Среда, 17.07.2019, 15:56 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем привет!
Сломал голову, прочитал кучу информации, но ни как не могу найти решение. На одном из форумов есть решение перенести код на другую строчку, с помощью [vba]
Код
" & _"
[/vba], но не выходит выдает ошибку: "нельзя установить свойство FormulAarray класса Range". Вообще это возможно?
К сообщению приложен файл: 2500303.xlsm (22.3 Kb)
 
Ответить
СообщениеВсем привет!
Сломал голову, прочитал кучу информации, но ни как не могу найти решение. На одном из форумов есть решение перенести код на другую строчку, с помощью [vba]
Код
" & _"
[/vba], но не выходит выдает ошибку: "нельзя установить свойство FormulAarray класса Range". Вообще это возможно?

Автор - adamm1603
Дата добавления - 17.07.2019 в 15:56
bmv98rus Дата: Среда, 17.07.2019, 16:12 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
adamm1603, буквально вчера на форуме с которого пришли сюда https://www.planetaexcel.ru/forum....e985290


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеadamm1603, буквально вчера на форуме с которого пришли сюда https://www.planetaexcel.ru/forum....e985290

Автор - bmv98rus
Дата добавления - 17.07.2019 в 16:12
adamm1603 Дата: Среда, 17.07.2019, 16:40 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вариант с именами, не совсем подходит я про него знаю, так как данные формулы массива я вставляю с другой книги, в книгу с тремя листами, на каждом по 14 формул итого 14*3=42 формулы, то есть 42 тмени, на сколько знаю для 32 разрядного офиса это тяжеловато, если я не прав поправьте меня
 
Ответить
СообщениеВариант с именами, не совсем подходит я про него знаю, так как данные формулы массива я вставляю с другой книги, в книгу с тремя листами, на каждом по 14 формул итого 14*3=42 формулы, то есть 42 тмени, на сколько знаю для 32 разрядного офиса это тяжеловато, если я не прав поправьте меня

Автор - adamm1603
Дата добавления - 17.07.2019 в 16:40
bmv98rus Дата: Среда, 17.07.2019, 16:59 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
adamm1603, 42 - даже для 16ти разрядного не много.
ох не люблю я подобные методы
[vba]
Код
Sub Макрос7()
'
' Макрос7 Макрос
'

'
    Selection.Formula = _
        "=IF(RC[21]<>"""",IF(AND(RC[-1]<>"""",IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22])=""РД"",RC[28]<>""""),SUM((CONCATENATE(RC[28],IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22]))=(РАД_РД[Клеймо сварщика]))*(РАД_РД[начало]<RC[21])*(РАД_РД[окончание]>RC[21]))=0,FALSE),IF(AND(RC[-1]<>"""",IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22])=""РД"",RC[28]<>" & _
        """""),SUM((CONCATENATE(RC[28],IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22]))=(РАД_РД[Клеймо сварщика]))*(РАД_РД[начало]<RC[20])*(РАД_РД[окончание]>RC[20]))=0,FALSE))"
    SendKeys ("{F2}"), True
   SendKeys "^+~", True
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Среда, 17.07.2019, 17:30
 
Ответить
Сообщениеadamm1603, 42 - даже для 16ти разрядного не много.
ох не люблю я подобные методы
[vba]
Код
Sub Макрос7()
'
' Макрос7 Макрос
'

'
    Selection.Formula = _
        "=IF(RC[21]<>"""",IF(AND(RC[-1]<>"""",IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22])=""РД"",RC[28]<>""""),SUM((CONCATENATE(RC[28],IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22]))=(РАД_РД[Клеймо сварщика]))*(РАД_РД[начало]<RC[21])*(РАД_РД[окончание]>RC[21]))=0,FALSE),IF(AND(RC[-1]<>"""",IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22])=""РД"",RC[28]<>" & _
        """""),SUM((CONCATENATE(RC[28],IFERROR(LEFT(RC[22],SEARCH(""/"",RC[22],1)-1),RC[22]))=(РАД_РД[Клеймо сварщика]))*(РАД_РД[начало]<RC[20])*(РАД_РД[окончание]>RC[20]))=0,FALSE))"
    SendKeys ("{F2}"), True
   SendKeys "^+~", True
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 17.07.2019 в 16:59
adamm1603 Дата: Среда, 17.07.2019, 17:54 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, спасибо, но при вставке кода, формула массива не закрепляется, нет фигурных скобок
 
Ответить
Сообщениеbmv98rus, спасибо, но при вставке кода, формула массива не закрепляется, нет фигурных скобок

Автор - adamm1603
Дата добавления - 17.07.2019 в 17:54
bmv98rus Дата: Среда, 17.07.2019, 18:01 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
не знаю, у меня все работает
К сообщению приложен файл: Copy_of_1028.xlsm (28.2 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениене знаю, у меня все работает

Автор - bmv98rus
Дата добавления - 17.07.2019 в 18:01
adamm1603 Дата: Среда, 17.07.2019, 18:15 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
С вашего файла открыл, то же самое, может у меня офис русскоязычный?
Если я правильно понял, сначала формула вставляется, без массива, а после оператор SendKeys заключает фигурные скобки, то есть массив


Сообщение отредактировал adamm1603 - Среда, 17.07.2019, 18:22
 
Ответить
СообщениеС вашего файла открыл, то же самое, может у меня офис русскоязычный?
Если я правильно понял, сначала формула вставляется, без массива, а после оператор SendKeys заключает фигурные скобки, то есть массив

Автор - adamm1603
Дата добавления - 17.07.2019 в 18:15
bmv98rus Дата: Среда, 17.07.2019, 18:40 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Посмотрите что после вставки и проделайте руками F2, Ctrl+Shift+Enter


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеПосмотрите что после вставки и проделайте руками F2, Ctrl+Shift+Enter

Автор - bmv98rus
Дата добавления - 17.07.2019 в 18:40
adamm1603 Дата: Среда, 17.07.2019, 18:55 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
суть то в том, что ручками я не хотел делать, сама задумка того, что бы исключить ручной ввод
 
Ответить
Сообщениесуть то в том, что ручками я не хотел делать, сама задумка того, что бы исключить ручной ввод

Автор - adamm1603
Дата добавления - 17.07.2019 в 18:55
bmv98rus Дата: Среда, 17.07.2019, 19:46 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Я пишу о том как проверить, а не ….


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеЯ пишу о том как проверить, а не ….

Автор - bmv98rus
Дата добавления - 17.07.2019 в 19:46
anvg Дата: Среда, 17.07.2019, 23:14 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
не знаю, у меня все работает
Привет, Михаил.
А зачем же так жестоко?
Цитата
SendKeys ("{F2}"), True
SendKeys "^+~", True

А почему бы не использовать [url=https://docs.microsoft.com/ru-ru/office/vba/api/excel.range.formulaarray?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dru-RU%26k%3Dk(vbaxl10.chm144133)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue]Range.FormulaArray property (Excel)[/url]?
 
Ответить
Сообщение
не знаю, у меня все работает
Привет, Михаил.
А зачем же так жестоко?
Цитата
SendKeys ("{F2}"), True
SendKeys "^+~", True

А почему бы не использовать [url=https://docs.microsoft.com/ru-ru/office/vba/api/excel.range.formulaarray?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dru-RU%26k%3Dk(vbaxl10.chm144133)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue]Range.FormulaArray property (Excel)[/url]?

Автор - anvg
Дата добавления - 17.07.2019 в 23:14
bmv98rus Дата: Четверг, 18.07.2019, 07:42 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
anvg, Андрей, только из-за этого:
Remarks
The FormulaArray property also has a character limit of 255.
.
Собственно что и послужило предпосылкой к появлению темы.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 18.07.2019, 07:43
 
Ответить
Сообщениеanvg, Андрей, только из-за этого:
Remarks
The FormulaArray property also has a character limit of 255.
.
Собственно что и послужило предпосылкой к появлению темы.

Автор - bmv98rus
Дата добавления - 18.07.2019 в 07:42
adamm1603 Дата: Четверг, 18.07.2019, 08:03 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, я разобрался с функцией SendKeys, она имитирует ручной ввод нажатия клавиш, но походу не срабатывает F2, ок буду пробовать ещё спасибо!
F2 срабатывает, но ввод ctrl+shift+enter ни в какую не хочет работать


Сообщение отредактировал adamm1603 - Четверг, 18.07.2019, 08:36
 
Ответить
Сообщениеbmv98rus, я разобрался с функцией SendKeys, она имитирует ручной ввод нажатия клавиш, но походу не срабатывает F2, ок буду пробовать ещё спасибо!
F2 срабатывает, но ввод ctrl+shift+enter ни в какую не хочет работать

Автор - adamm1603
Дата добавления - 18.07.2019 в 08:03
bmv98rus Дата: Четверг, 18.07.2019, 08:33 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Непредcказуемый результат - это и есть причина по которой этот метод не лучший. Но если он единственный, то ...


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 18.07.2019, 09:41
 
Ответить
СообщениеНепредcказуемый результат - это и есть причина по которой этот метод не лучший. Но если он единственный, то ...

Автор - bmv98rus
Дата добавления - 18.07.2019 в 08:33
adamm1603 Дата: Четверг, 18.07.2019, 08:48 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Все разобрался SendKeys не хочет работать с 32 разрядной версией офиса
 
Ответить
СообщениеВсе разобрался SendKeys не хочет работать с 32 разрядной версией офиса

Автор - adamm1603
Дата добавления - 18.07.2019 в 08:48
bmv98rus Дата: Четверг, 18.07.2019, 09:43 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
SendKeys не хочет работать с 32 разрядной версией офиса
значит не разобрались , ибо на 2013x32 это писалось и разницы в разрядности нет. А вот настройки или что-то иное, что перехватывает F2 может быть причиной.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
SendKeys не хочет работать с 32 разрядной версией офиса
значит не разобрались , ибо на 2013x32 это писалось и разницы в разрядности нет. А вот настройки или что-то иное, что перехватывает F2 может быть причиной.

Автор - bmv98rus
Дата добавления - 18.07.2019 в 09:43
adamm1603 Дата: Четверг, 18.07.2019, 11:02 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я пробовал на 64 офисе работает на 32 нет, возможно совпадение, значит буду копать дальше
 
Ответить
СообщениеЯ пробовал на 64 офисе работает на 32 нет, возможно совпадение, значит буду копать дальше

Автор - adamm1603
Дата добавления - 18.07.2019 в 11:02
bmv98rus Дата: Четверг, 18.07.2019, 12:01 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Я пробовал на 64 офисе работает на 32 нет
Думаю вы пробовали не переустанавливая его, а использовали другой ПК, а значит другие настройки другое окружение...… Короче, если все норм, то должно работать, но гарантии 100 нет и нужно проверят Range.HasArray. Что делать если не- Ваше дело, но при наличии таких сложностей, я б использовал имена и количество в сотню не будет проблемой, при этом можно использовать переменную листа а не книги и тем самым использовать три раза одно наименование для разных листов, но одинаковой формулы.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
Я пробовал на 64 офисе работает на 32 нет
Думаю вы пробовали не переустанавливая его, а использовали другой ПК, а значит другие настройки другое окружение...… Короче, если все норм, то должно работать, но гарантии 100 нет и нужно проверят Range.HasArray. Что делать если не- Ваше дело, но при наличии таких сложностей, я б использовал имена и количество в сотню не будет проблемой, при этом можно использовать переменную листа а не книги и тем самым использовать три раза одно наименование для разных листов, но одинаковой формулы.

Автор - bmv98rus
Дата добавления - 18.07.2019 в 12:01
adamm1603 Дата: Четверг, 18.07.2019, 15:41 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 144
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я с вами согласен, с именами мне было бы проще, но тут совсем другая кухня, я пробовал макроредактором записать, копируя формулу с одного листа и всавляя в имена, не получается(. А вообще данную тему мусолил уже в двух темах.
1. https://www.planetaexcel.ru/forum....e985383
2. https://www.planetaexcel.ru/forum....e984518
 
Ответить
СообщениеЯ с вами согласен, с именами мне было бы проще, но тут совсем другая кухня, я пробовал макроредактором записать, копируя формулу с одного листа и всавляя в имена, не получается(. А вообще данную тему мусолил уже в двух темах.
1. https://www.planetaexcel.ru/forum....e985383
2. https://www.planetaexcel.ru/forum....e984518

Автор - adamm1603
Дата добавления - 18.07.2019 в 15:41
bmv98rus Дата: Четверг, 18.07.2019, 15:52 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
adamm1603, ну в одной из них я тоже встрял, так что знаю. другое дело что тут обсуждается вопрос на который я дал ответ, более менее рабочий
копируя формулу с одного листа и всавляя в имена, не получается
это другой вопрос Приводите пример в другой теме разберемся. Надеюсь брали формулу FormulaR1C1 для копирования.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеadamm1603, ну в одной из них я тоже встрял, так что знаю. другое дело что тут обсуждается вопрос на который я дал ответ, более менее рабочий
копируя формулу с одного листа и всавляя в имена, не получается
это другой вопрос Приводите пример в другой теме разберемся. Надеюсь брали формулу FormulaR1C1 для копирования.

Автор - bmv98rus
Дата добавления - 18.07.2019 в 15:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как ввести формулу массива, длиной >256 знаков через VBA (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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