Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Формула с применением функции ЕСЛИ

Автор baters, 17.05.2011, 20:08:30

« назад - далее »

baters

Цитата: solmir от 28.05.2011, 00:16:34
baters, почитайте функцию ЕСЛИ там все подробно описано. Если Вы не можете понять, значить делаете
на заказ не имея представления, либо не хотите осмыслить сказаное вам вначале ответа на ваш вопрос.

Какой заказ?! вы о чем, либо отсыпайте, что курите, либо пишите понятнее. А формулу я победил.

baters

"=IF(AND(R[-3]C[-3]=0,R[-3]C[-2]=0),R[-3]C[-1],0)"    (=ЕСЛИ(И(A1=0;B1=0);C1;0))

Подскажите плиз, где тут наименования/номера столбцов? (сидю макрос пишу, не могу сообразить где менять столбцы)

Дмитрий Щербаков(The_Prist)

Все, что после С - номер столбца. Если в квадратных скобок - значит относительная ссылка. Т.е. -3 - это влево на три столбца от ячейки, в которой формула.

Для экспериментов поиграйтесь с формулами, установив стиль ссылок R1C1
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

Спасибо.


"=IF(AND(RC[5]=0,RC[13]=0),RC[7],0)"

я правильно сделал, если ячейки столбца 5 и 13 равны "0" то подставляется значения 7 столбца.

Дмитрий Щербаков(The_Prist)

А проверить самому лень? Как минимум надо знать в какой ячейке сама формула. Вы об этом не говорите. Да и не читаете Вы все равно, что Вам пишут - зачем же тогда спрашивать?
Я что писал?
ЦитироватьЕсли в квадратных скобках - значит относительная ссылка. Т.е. -3 - это влево на три столбца от ячейки, в которой формула.
Ну проведите эксперимент, а если на эксперимент не хватает желания - то хоть логику-то можно включить: если без минуса - значит будет браться значение ячейки, вправо от ячейки с формулой на указанное кол-во столбцов. Без скобок - нет смещения вообще.

Включаете макрорекордер, записываете формулы в ячейку с абсолютными и относительными ссылками. И смотрите что и как получается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

Я проверяю...проверяю.... по логике вот правельно =ЕСЛИ(И(RC5=0;RC13=0);RC7;0)  но при использовании бред какой то выдает :(

Дмитрий Щербаков(The_Prist)

Я понимаю. Вот смотрю на формулу - вроде рабочая. Только вот один косяк - Вы опять в нас обрывками информации кидаетесь.
Вот то, что Вы выше написали - это что? Формула в ячейке? Или в коде? Если в коде - то надо либо писать FormulaR1C1Local, либо имена функций на английском.
Либо полностью пишите почему у Вас бред выдает. Я не вижу никаких предпосылок к неработоспособности формулы.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

#22
    Range("E3:E" & lLastRow).FormulaR1C1 = "=SUMIF(Инвентаризация!C4,RC1,Инвентаризация!C11)"
    Range("F3:F" & lLastRow).FormulaR1C1 = "=SUMIF(Инвентаризация!C4,RC1,Инвентаризация!C12)"
    Range("G3:G" & lLastRow).FormulaR1C1 = "=SUMIF(Инвентаризация!C4,RC1,Инвентаризация!C13)"
    Range("H3:H" & lLastRow).FormulaR1C1 = "=SUMIF(Инвентаризация!C4,RC1,Инвентаризация!C14)"
    Range("I3:I" & lLastRow).FormulaR1C1 = "=RC5-RC7"
    Range("J3:J" & lLastRow).FormulaR1C1 = "=RC6-RC8"
    Range("M3:M" & lLastRow).FormulaR1C1 = "=SUMIF(Аппеляция!C4,RC1,Аппеляция!C17)"
    Range("N3:N" & lLastRow).FormulaR1C1 = "=SUMIF(Аппеляция!C4,RC1,Аппеляция!C18)"
    Range("P3:P" & lLastRow).FormulaR1C1 = "=RC9+RC13"
    Range("Q3:Q" & lLastRow).FormulaR1C1 = "=RC10+RC14"
    Range("T3:T" & lLastRow).FormulaR1C1 = "=SUMIF(Межинвентаризационный период!C4,RC1,Межинвентаризационный период!C9)"
    Range("U3:U" & lLastRow).FormulaR1C1 = "=SUMIF(Межинвентаризационный период!C4,RC1,Межинвентаризационный период!C10)"
    Range("R3:R" & lLastRow).FormulaR1C1 = "=SUMIF(Предыдущая сплошная!C4,RC1,Предыдущая сплошная!C17)"
    Range("S3:S" & lLastRow).FormulaR1C1 = "=SUMIF(Предыдущая сплошная!C4,RC1,Предыдущая сплошная!C18)"
    Range("V3:V" & lLastRow).FormulaR1C1 = "=SUMIF(РЦ!C4,RC1,РЦ!C5)"
    Range("W3:W" & lLastRow).FormulaR1C1 = "=RC22*RC3"
    Range("X3:X" & lLastRow).FormulaR1C1 = "=IF(AND(RC5=0,RC13=0),RC7,0)"  прописал в макросе



=ЕСЛИ(И(RC5=0;RC13=0);RC7;0)  после применения макроса в ячейке стоит

(если 5 и 13 столбец= 0 то подставляется значение 7 столбца).


Дмитрий Щербаков(The_Prist)

И что неправильно работает?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

Что интересно.....при срабатывании макроса цифры по формуле =IF(AND(RC5=0,RC13=0),RC7,0 - полный бред....но если я в каждой ячейке начинаю клацать ентером по этой формуле...то все выставляется правильно......попробовал добавить в макрос    Range("E3:AA" & lLastRow).Value = Range("E3:AA" & lLastRow).Value
все равно цифры бредовые вывел :(

baters

Цитата: The_Prist от 29.05.2011, 16:14:50
И что неправильно работает?
Резултат не тот :( а жамкать 20 000 раз ентер ... жестко

Дмитрий Щербаков(The_Prist)

 :) Эх...Не надо клацать. Вам надо лишь в конце макроса поставить строку:
Application.Calculation = xlAutomatic
Вы явно потеряли эту строку, а вот перед выполнением где-то есть строка
Application.Calculation = xlManual
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

    Application.ScreenUpdating = 0               вначале есть это

  Application.ScreenUpdating = 1                 в конце это

Application.Calculation = xlAutomatic добавил последней строкой в макросе......показывает так же бредовые цифры....но синим цветом....результат стал просто гламурнее.....

А остальные формулы показывают правельный результат....неправельно только последняя формула..


Дмитрий Щербаков(The_Prist)

Ну тогда...Я без файла ничего сказать не могу. Надеюсь, Вы Range("E3:AA" & lLastRow).Value = Range("E3:AA" & lLastRow).Value убрали перед вставкой Application.Calculation = xlAutomatic? Если да, то либо формулы неверно записываются, либо все же пересчет не отрабатывает. Если Вы говорите, что после F2-Enter все верно считает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

 Победа. правильно вот так.
    Range("X3:X" & lLastRow).FormulaR1C1 = "=IF(AND(RC5=0,RC13=0),RC7,0)"
    Application.Calculation = xlAutomatic
    Range("E3:H" & lLastRow).Value = Range("E3:H" & lLastRow).Value

Спасибо!

Яндекс.Метрика Рейтинг@Mail.ru