Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение результатов расчета как значение 
:(
    Опции темы
Elfix
Дата 31.10.2013, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Доброго времени суток,

Возник небольшой вопрос.
Код

Cells(Range("Январь").Row, Range("Январь").Column).FormulaLocal = "=длинная сложная формула"
    Cells(Range("Январь").Row, Range("Январь").Column).Copy
    
    Range("Январь").PasteSpecial xlPasteFormulas


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

Range("Январь").Value = Range("Январь").Value приводит к появлению в некоторых ячейках значения #Н/Д
PM MAIL   Вверх
Akina
Дата 1.11.2013, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Elfix @  31.10.2013,  23:50 Найти цитируемый пост)
Range("Январь").Value = Range("Январь").Value приводит к появлению в некоторых ячейках значения #Н/Д 

Правильно, потому что инициируется расчёт .Values. А вот .PasteSpecial xlPasteValues вроде должен сделать то, что тебе требуется...

Можно также попробовать выполнить присвоение по одной ячейке...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 1.11.2013, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



PasteValues не работает потому что есть разрывы в диапазоне.

По одной ячейке долго. Может есть какой способ?
PM MAIL   Вверх
Akina
Дата 1.11.2013, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Elfix @  1.11.2013,  13:45 Найти цитируемый пост)
По одной ячейке долго.

В смысле - долго? чёнить типа:
Код

application.screenUpdating = false
for each onecell in somerange
  onecell.select
  selection.copy
  selection.pastespecial xlpastevalues
  somerange.select
next
application.screenUpdating = true




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 1.11.2013, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



OneCell принимает значение 0 и ничего не работает.
PM MAIL   Вверх
Akina
Дата 1.11.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Elfix @  1.11.2013,  13:59 Найти цитируемый пост)
OneCell принимает значение 0 и ничего не работает. 

У меня такое вполне работает... надеюсь, ты определил эту переменную как Range?

PS. somerange.select можно убрать - это я на автомате его влепил.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 3.11.2013, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Очень странно. Код не работает.

Открыл новый чистый эксель, сделал область с одним разрывом, накидал код:

Код

Sub Считать()
    Cells(Range("Январь").Row, Range("Январь").Column).FormulaLocal = "=1+1"
    Cells(Range("Январь").Row, Range("Январь").Column).Copy
    
    Range("Январь").PasteSpecial xlPasteFormulas
    Range("Февраль").PasteSpecial xlPasteFormulas
    Range("Март").PasteSpecial xlPasteFormulas
    Range("Апрель").PasteSpecial xlPasteFormulas
    
    
    
    'Dim i As Range
    'For Each i In Range("Январь")
     '   i.Copy
        '  i.PasteSpecial xlPasteValues
    'Next
    
    Range("Январь").Value = Range("Январь").Value
    Range("Февраль").Value = Range("Февраль").Value
    
End Sub


Работает и через цикл и через  Value.
Почему же не работает в продуктивном проекте?
Может быть это зависит от количества разрывов в диапазоне Range?

Как это победить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.