Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2015, 21:38   #31
Demetros
Форумчанин
 
Регистрация: 28.01.2014
Сообщений: 126
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
instr(Formulas, cell.FormulaLocal) > 0
читай
если текст формулы из ячейки есть в тексте строки с формулами

как считаете последовательность
"А1+В1"
есть в строке
"=A1+B1+112=формула2"

отвечу за Вас, есть, начиная с 2-го символа

заменяйте все вручную это медленнее, но в Вашем случае - надежнее!
Значит это не мой вариант.

Код:
Sub mjhgj()
'удаление указанной формулы с листа
    For Each cell In UsedRange
    If Left(cell.FormulaLocal, 10) = ("=A1+B1+112") Or ("=A1+B1+113") Then cell.Value = cell.Value
    Next cell
End Sub
Хотел так, но что-то не пашет. Что не так делаю?
Demetros вне форума Ответить с цитированием
Старый 17.11.2015, 21:40   #32
Demetros
Форумчанин
 
Регистрация: 28.01.2014
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
For Each cell In UsedRange
- зачем????
Написал ведь выше как нужно делать... Ну хотя если нет времени на перекур - делайте как знаете
еще понять бы в чем разница (
Свой код я понял как работает.
Demetros вне форума Ответить с цитированием
Старый 17.11.2015, 21:56   #33
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
заменяйте все вручную это медленнее, но в Вашем случае - надежнее!
Значит это не мой вариант.
замена вручную - это именно ВАШ ВАРИАНТ

Цитата:
Что не так делаю?
1. не тем делом занялись
2. вместо того чтобы самостоятельно попытаться понять, что там не так, Вы сразу пишете сюда
3. правильно так:
Код:
If Left(cell.FormulaLocal, 10) = "=A1+B1+112" Or Left(cell.FormulaLocal, 10) = "=A1+B1+113" Then cell.Value = cell.Value
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.11.2015, 22:01   #34
Demetros
Форумчанин
 
Регистрация: 28.01.2014
Сообщений: 126
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
замена вручную - это именно ВАШ ВАРИАНТ


1. не тем делом занялись
2. вместо того чтобы самостоятельно попытаться понять, что там не так, Вы сразу пишете сюда
3. правильно так:
Код:
If Left(cell.FormulaLocal, 10) = "=A1+B1+112" Or Left(cell.FormulaLocal, 10) = "=A1+B1+113" Then cell.Value = cell.Value
Спасибо. А у кого же мне еще спрашивать. Жена не знает, по телеку не говорят про это.
Тот кто хочет научиться задает вопросы, а тот кто не хочет, спит на парах

Последний раз редактировалось Demetros; 17.11.2015 в 22:18.
Demetros вне форума Ответить с цитированием
Старый 17.11.2015, 22:05   #35
Demetros
Форумчанин
 
Регистрация: 28.01.2014
Сообщений: 126
По умолчанию

На сегодня последний раз рискну задать вопрос
Чем отличаются эти строки?
For Each cell In UsedRange
For Each c In ActiveSheet.Cells.SpecialCells(xlCe llTypeFormulas)
Demetros вне форума Ответить с цитированием
Старый 17.11.2015, 22:25   #36
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1 - перебирает все 100500 ячеек
2 - перебирает только те, в которых формулы
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2015, 22:28   #37
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
А у кого же мне еще спрашивать
пользуйтесь справкой Excel
F1
в строку поиска
or

читаете:
Or Operator
Used to perform a logical disjunction on two expressions.
Syntax
result = expression1 Or expression2

а ниже примеры в одном из них написано:
MyCheck = B > A Or B > C
а не:
MyCheck = B > A Or > C

Цитата:
последний раз рискну задать вопрос
звучит оптимистично, верится с трудом

и в таком случае, последний на сегодня ответ:
начиная с 2007 на листе 1млн. строк и 16тыс. колонок
ячеек получается одно умножить на другое
так вот:
For Each cell In cells - это указание заглянуть в каждую ячейку листа
For Each cell In UsedRange - указание заглянуть в каждую ячейку, которая использована пользователем (внесены любые данные (в т.ч. формулы), применено специфическое форматирование - это все использованные пользователем ячейки)
For Each Cell In ActiveSheet.Cells.SpecialCells(xlCe llTypeFormulas) - ТОЛЬКО ячейки, содержащие формулы

удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.11.2015, 22:44   #38
Demetros
Форумчанин
 
Регистрация: 28.01.2014
Сообщений: 126
По умолчанию

Справкой пользоваться трудновато, в школе учил французский, а гугл иногда переводит так, что без литра не разберешь.
For Each Cell In ActiveSheet.Cells.SpecialCells(xlCe llTypeFormulas) - Понял, что в моем случае работать будет быстрее.
С моей настырностью и вашей помощью задача решена.

Код:
Sub JJJ()
Dim c As Range
    For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
        If Left(c.Formula, 10) = "=A1+B1+112" Or _
           Left(c.Formula, 10) = "=A2+B2+112" Then
           c.Value = c.Value
        End If
    Next
End Sub
Всем, уставшим от моих вопросов большое спасибо.
Demetros вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пользовательской функции в Excel Аcmrf Microsoft Office Excel 5 29.04.2014 16:09
создание пользовательской функции Devil669 Microsoft Office Excel 1 10.12.2012 23:47
написание пользовательской функции drNabla Microsoft Office Excel 15 05.11.2010 09:08
Составить программу вычисления выражения и выведения полученного результата на экран.тема ФУНКЦИИ. coolbaba Общие вопросы Delphi 1 03.06.2010 03:31
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28