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

Вход

Регистрация

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

 

= Мир MS Excel/несколько формул для одного столбца - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
несколько формул для одного столбца
MARINKA Дата: Четверг, 22.03.2018, 15:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Нужно проверить данные на определенные условия по формулам. Условий много, каждую формулу вставлять в новый столбец не вариант.
Можно ли макросом прописать одну формулу, потом на основании полученных значений, если 1 поставить другую формулу и тд.
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+с
'
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=""апсейл ШПД при миграции"",R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=1),""IPTV"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=1, R[-1]C[-2]=""Интернет"",R[-1]C[-1]=""апсейл ШПД при миграции""),""IPTV"",""1"")))"
    iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$FT$33508").AutoFilter Field:=3, Criteria1:="=1", _
        Operator:=xlOr, Criteria2:="=ЛОЖЬ"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=1,R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=""апсейл IPTV при миграции""),""ШПД"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=""апсейл IPTV при миграции"", R[-1]C[-2]=""Интернет"",R[-1]C[-1]=1),""ШПД"",""1"")))"
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
End Sub
[/vba]

на что заменить после второй формулы, чтобы формула прописывалась только там где 1?
На данный момент вторая формула, полностью заменяет первую.
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
[/vba]
К сообщению приложен файл: 4618657.xlsm (53.1 Kb)


Сообщение отредактировал MARINKA - Четверг, 22.03.2018, 17:06
 
Ответить
СообщениеНужно проверить данные на определенные условия по формулам. Условий много, каждую формулу вставлять в новый столбец не вариант.
Можно ли макросом прописать одну формулу, потом на основании полученных значений, если 1 поставить другую формулу и тд.
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+с
'
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=""апсейл ШПД при миграции"",R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=1),""IPTV"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=1, R[-1]C[-2]=""Интернет"",R[-1]C[-1]=""апсейл ШПД при миграции""),""IPTV"",""1"")))"
    iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$FT$33508").AutoFilter Field:=3, Criteria1:="=1", _
        Operator:=xlOr, Criteria2:="=ЛОЖЬ"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=1,R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=""апсейл IPTV при миграции""),""ШПД"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=""апсейл IPTV при миграции"", R[-1]C[-2]=""Интернет"",R[-1]C[-1]=1),""ШПД"",""1"")))"
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
End Sub
[/vba]

на что заменить после второй формулы, чтобы формула прописывалась только там где 1?
На данный момент вторая формула, полностью заменяет первую.
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Selection.AutoFill Destination:=Range("C2:C" & iLastRow)
[/vba]

Автор - MARINKA
Дата добавления - 22.03.2018 в 15:35
Roman777 Дата: Четверг, 22.03.2018, 16:56 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
MARINKA, лучше поясните в файлике, как вы хотите...


Много чего не знаю!!!!
 
Ответить
СообщениеMARINKA, лучше поясните в файлике, как вы хотите...

Автор - Roman777
Дата добавления - 22.03.2018 в 16:56
MARINKA Дата: Четверг, 22.03.2018, 17:07 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Roman777, прикрепила файл
 
Ответить
СообщениеRoman777, прикрепила файл

Автор - MARINKA
Дата добавления - 22.03.2018 в 17:07
Roman777 Дата: Четверг, 22.03.2018, 17:19 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
MARINKA, макрос придётся чуток другой:
[vba]
Код
Sub dsds2()
    Dim i&, n&
    Dim s1$, s2$
    s2 = "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=1,R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=""апсейл IPTV при миграции""),""ШПД"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=""апсейл IPTV при миграции"", R[-1]C[-2]=""Интернет"",R[-1]C[-1]=1),""ШПД"",""1"")))"
    s1 = "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=""апсейл ШПД при миграции"",R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=1),""IPTV"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=1, R[-1]C[-2]=""Интернет"",R[-1]C[-1]=""апсейл ШПД при миграции""),""IPTV"",""1"")))"
    n = ActiveSheet.Cells(Rows.count, 2).End(xlUp).Row
    For i = 2 To n
        If Cells(i, 2) = 1 Then
            Cells(i, 3).FormulaR1C1 = s2
        Else
            Cells(i, 3).FormulaR1C1 = s1
        End If
    Next i
End Sub
[/vba]
Но почему бы не сделать всё формулой?


Много чего не знаю!!!!
 
Ответить
СообщениеMARINKA, макрос придётся чуток другой:
[vba]
Код
Sub dsds2()
    Dim i&, n&
    Dim s1$, s2$
    s2 = "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=1,R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=""апсейл IPTV при миграции""),""ШПД"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=""апсейл IPTV при миграции"", R[-1]C[-2]=""Интернет"",R[-1]C[-1]=1),""ШПД"",""1"")))"
    s1 = "=IF(RC[-2]=""Интернет"",IF(AND(RC[-1]=""апсейл ШПД при миграции"",R[1]C[-2]=""Цифровое телевидение"",R[1]C[-1]=1),""IPTV"",""1""),IF(RC[-2]=""Цифровое телевидение"",IF(AND(RC[-1]=1, R[-1]C[-2]=""Интернет"",R[-1]C[-1]=""апсейл ШПД при миграции""),""IPTV"",""1"")))"
    n = ActiveSheet.Cells(Rows.count, 2).End(xlUp).Row
    For i = 2 To n
        If Cells(i, 2) = 1 Then
            Cells(i, 3).FormulaR1C1 = s2
        Else
            Cells(i, 3).FormulaR1C1 = s1
        End If
    Next i
End Sub
[/vba]
Но почему бы не сделать всё формулой?

Автор - Roman777
Дата добавления - 22.03.2018 в 17:19
MARINKA Дата: Вторник, 27.03.2018, 16:43 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Roman777, спасибо, но не то.
Я не правильно сформулировала задачу :'( , нужно
В столбце С, проставить первую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить вторую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить третью формулу и тд
Те нужно прописать применение n-формул в столбцу С, которые постепенно заменят 1 на значения
 
Ответить
СообщениеRoman777, спасибо, но не то.
Я не правильно сформулировала задачу :'( , нужно
В столбце С, проставить первую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить вторую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить третью формулу и тд
Те нужно прописать применение n-формул в столбцу С, которые постепенно заменят 1 на значения

Автор - MARINKA
Дата добавления - 27.03.2018 в 16:43
Roman777 Дата: Среда, 28.03.2018, 21:48 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
там где в ячейках С:С =1 (те в 3 столбце) проставить вторую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить третью формулу и тд

у Вас тут опечатка, или я всё ещё не понимаю о чём речь в вашей задаче?
Получается, что Вам нужны итерации, после постановок формул вновь исследуя результат проставлять следующую формулу?
Тогда зачем тут формулы, если можно сразу ВБА кодом?
И вообще, какими будут все формулы, последовательно, как Вы планируете их вписать и куда?
Лучше, наверное, пояснить, какие исходные данные и чего Вы из них хотите сделать...


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 29.03.2018, 07:05
 
Ответить
Сообщение
там где в ячейках С:С =1 (те в 3 столбце) проставить вторую формулу
там где в ячейках С:С =1 (те в 3 столбце) проставить третью формулу и тд

у Вас тут опечатка, или я всё ещё не понимаю о чём речь в вашей задаче?
Получается, что Вам нужны итерации, после постановок формул вновь исследуя результат проставлять следующую формулу?
Тогда зачем тут формулы, если можно сразу ВБА кодом?
И вообще, какими будут все формулы, последовательно, как Вы планируете их вписать и куда?
Лучше, наверное, пояснить, какие исходные данные и чего Вы из них хотите сделать...

Автор - Roman777
Дата добавления - 28.03.2018 в 21:48
  • Страница 1 из 1
  • 1
Поиск:

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