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

 

= Мир MS Excel/Вычислить сумму с учётом указанного знака слагаемого - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Вычислить сумму с учётом указанного знака слагаемого
astashov_michail@tutby Дата: Среда, 10.08.2022, 15:38 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
Всем здравствуйте. Вопрос в следующем, что б написать формулу, получается много раз писать ЕСЛИ, это очень неудобно и возможно что-либо напутать. как можно упростить её , при том что переменных может более чем три как в примере. Красным цветом указаны переменные.
К сообщению приложен файл: 2110611.xlsx (19.1 Kb)


astashovM..
 
Ответить
СообщениеВсем здравствуйте. Вопрос в следующем, что б написать формулу, получается много раз писать ЕСЛИ, это очень неудобно и возможно что-либо напутать. как можно упростить её , при том что переменных может более чем три как в примере. Красным цветом указаны переменные.

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 15:38
Nic70y Дата: Среда, 10.08.2022, 16:40 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9133
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
esΔ=0+(-0,15*(-1))+0,3=0,45
почему 0,3?


ЮMoney 41001841029809
 
Ответить
СообщениеesΔ=0+(-0,15*(-1))+0,3=0,45
почему 0,3?

Автор - Nic70y
Дата добавления - 10.08.2022 в 16:40
astashov_michail@tutby Дата: Среда, 10.08.2022, 16:54 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
Nic70y, да, прошу прощения - 0,4, забыл изменить :(. Прикрепил изменённый файл
К сообщению приложен файл: 21106113.xlsx (19.1 Kb)


astashovM..
 
Ответить
СообщениеNic70y, да, прошу прощения - 0,4, забыл изменить :(. Прикрепил изменённый файл

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 16:54
Nic70y Дата: Среда, 10.08.2022, 16:57 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9133
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
=СУММЕСЛИ()
К сообщению приложен файл: 6336794.xlsx (11.7 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Среда, 10.08.2022, 17:01
 
Ответить
Сообщение
=СУММЕСЛИ()

Автор - Nic70y
Дата добавления - 10.08.2022 в 16:57
msi2102 Дата: Среда, 10.08.2022, 17:08 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Если есть функция "ПОСЛЕД", то можно ещё так
А:
=СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2)))-СУММ(ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2)))

esΔ
=СУММ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)))+СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2)))

eiΔ
=СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)))+СУММ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2)))
К сообщению приложен файл: 2110611_2.xlsx (12.8 Kb)


Сообщение отредактировал msi2102 - Среда, 10.08.2022, 17:10
 
Ответить
СообщениеЕсли есть функция "ПОСЛЕД", то можно ещё так
А:
=СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2)))-СУММ(ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2)))

esΔ
=СУММ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)))+СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2)))

eiΔ
=СУММ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)))+СУММ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2)))

Автор - msi2102
Дата добавления - 10.08.2022 в 17:08
astashov_michail@tutby Дата: Среда, 10.08.2022, 17:11 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
Nic70y, Отлично. Спасибо. А как визуализировать , чтоб после ответы в соседнем столбце было расписано типа -
А=70+(-45)+325=350
esΔ=0+(-0,15*(-1))+0,4=0,55


astashovM..
 
Ответить
СообщениеNic70y, Отлично. Спасибо. А как визуализировать , чтоб после ответы в соседнем столбце было расписано типа -
А=70+(-45)+325=350
esΔ=0+(-0,15*(-1))+0,4=0,55

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 17:11
msi2102 Дата: Среда, 10.08.2022, 17:44 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Ну теперь если есть "ПОСЛЕД" и "ОБЪЕДИНИТЬ" :D
А:
="A="&ОБЪЕДИНИТЬ("";1;ОБЪЕДИНИТЬ("+";1;ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))));ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))))

esΔ:
="esΔ="&ОБЪЕДИНИТЬ("+";1;ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)));ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))))

eiΔ:
="eiΔ="&ОБЪЕДИНИТЬ("";1;ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)));ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))))
К сообщению приложен файл: 6491173.xlsx (13.0 Kb)
 
Ответить
СообщениеНу теперь если есть "ПОСЛЕД" и "ОБЪЕДИНИТЬ" :D
А:
="A="&ОБЪЕДИНИТЬ("";1;ОБЪЕДИНИТЬ("+";1;ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))));ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(C1:C6;ПОСЛЕД(3;1;1;2))))

esΔ:
="esΔ="&ОБЪЕДИНИТЬ("+";1;ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)));ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))))

eiΔ:
="eiΔ="&ОБЪЕДИНИТЬ("";1;ЕСЛИ(ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2))=0;"";ИНДЕКС(B1:B6="+";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;2;2)));ЕСЛИ(-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))=0;"";-ИНДЕКС(B1:B6="-";ПОСЛЕД(3;1;1;2))*ИНДЕКС(D1:D6;ПОСЛЕД(3;1;1;2))))

Автор - msi2102
Дата добавления - 10.08.2022 в 17:44
astashov_michail@tutby Дата: Среда, 10.08.2022, 18:03 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, я скачал файл ваш, открыл, попробовал изменить в таблице + на - и в формулах #ИМЯ?


astashovM..
 
Ответить
Сообщениеmsi2102, я скачал файл ваш, открыл, попробовал изменить в таблице + на - и в формулах #ИМЯ?

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 18:03
msi2102 Дата: Среда, 10.08.2022, 18:15 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Цитата astashov_michail@tutby, 10.08.2022 в 18:03, в сообщении № 8 ( писал(а)):
и в формулах #ИМЯ?
Поэтому и писал: "если есть эти эти функции", если не ошибаюсь ОБЪЕДИНИТЬ появилась в 2019-ом, а ПОСЛЕД в 2021 или 365
 
Ответить
Сообщение
Цитата astashov_michail@tutby, 10.08.2022 в 18:03, в сообщении № 8 ( писал(а)):
и в формулах #ИМЯ?
Поэтому и писал: "если есть эти эти функции", если не ошибаюсь ОБЪЕДИНИТЬ появилась в 2019-ом, а ПОСЛЕД в 2021 или 365

Автор - msi2102
Дата добавления - 10.08.2022 в 18:15
astashov_michail@tutby Дата: Среда, 10.08.2022, 18:42 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, у меня 2016 :(


astashovM..
 
Ответить
Сообщениеmsi2102, у меня 2016 :(

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 18:42
astashov_michail@tutby Дата: Среда, 10.08.2022, 22:00 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, я так понял что в 2016 это реализовать никак, да? :(


astashovM..
 
Ответить
Сообщениеmsi2102, я так понял что в 2016 это реализовать никак, да? :(

Автор - astashov_michail@tutby
Дата добавления - 10.08.2022 в 22:00
msi2102 Дата: Четверг, 11.08.2022, 08:36 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Цитата astashov_michail@tutby, 10.08.2022 в 22:00, в сообщении № 11 ( писал(а)):
в 2016 это реализовать никак

Не могу Вам точно сказать. После того как установили 2019 LTSC половина формул из башки повылетало, как говорится забыл даже то, чего не знал.
Скорее всего можно, но это нужно ждать формулистов, как вариант макрос, можно написать пользовательскую функцию (UDF)
 
Ответить
Сообщение
Цитата astashov_michail@tutby, 10.08.2022 в 22:00, в сообщении № 11 ( писал(а)):
в 2016 это реализовать никак

Не могу Вам точно сказать. После того как установили 2019 LTSC половина формул из башки повылетало, как говорится забыл даже то, чего не знал.
Скорее всего можно, но это нужно ждать формулистов, как вариант макрос, можно написать пользовательскую функцию (UDF)

Автор - msi2102
Дата добавления - 11.08.2022 в 08:36
Nic70y Дата: Четверг, 11.08.2022, 09:03 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 9133
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010

Sub u_416()
    Application.ScreenUpdating = False
    For Each a In Range("a7:a9")
        b = InStr("À0esei", Left(a, 2))
        d = ""
        For c = 1 To 5 Step 2
            If b = 1 Then
                e = Range("b" & c).Value
                If e = "+" Then
                    f = ""
                    g = ""
                Else
                    f = "("
                    g = "*-1)"
                End If
                x = "+"
                If d = "" Then x = ""
                d = d & x & f & Range("c" & c) & g
                a.Offset(0, 1) = "=" & d
                a.Offset(0, 2) = a & "=" & d
            ElseIf b = 3 Then
                e = Range("b" & c).Value
                If e = "+" Then
                    u = Range("d" & c).Value
                Else
                    u = "(" & Range("d" & c + 1).Value & "*-1)"
                End If
                x = "+"
                If d = "" Then x = ""
                d = d & x & u
                a.Offset(0, 1) = "=" & Replace(d, ",", ".")
                a.Offset(0, 2) = a & "=" & d
            ElseIf b = 5 Then
                e = Range("b" & c).Value
                If e = "+" Then
                    u = Range("d" & c + 1).Value
                Else
                    u = "(" & Range("d" & c).Value & "*-1)"
                End If
                x = "+"
                If d = "" Then x = ""
                d = d & x & u
                a.Offset(0, 1) = "=" & Replace(d, ",", ".")
                a.Offset(0, 2) = a & "=" & d
            End If
        Next
    Next
    Application.ScreenUpdating = True
End Sub

К сообщению приложен файл: 2110611.xlsm (21.1 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Sub u_416()    Application.ScreenUpdating = False    For Each a In Range("a7:a9")        b = InStr("À0esei"; Left(a; 2))        d = ""        For c = 1 To 5 Step 2            If b = 1 Then                e = Range("b" & c).Value                If e = "+" Then                    f = ""                    g = ""                Else                    f = "("                    g = "*-1)"                End If                x = "+"                If d = "" Then x = ""                d = d & x & f & Range("c" & c) & g                a.Offset(0; 1) = "=" & d                a.Offset(0; 2) = a & "=" & d            ElseIf b = 3 Then                e = Range("b" & c).Value                If e = "+" Then                    u = Range("d" & c).Value                Else                    u = "(" & Range("d" & c + 1).Value & "*-1)"                End If                x = "+"                If d = "" Then x = ""                d = d & x & u                a.Offset(0; 1) = "=" & Replace(d; ","; ".")                a.Offset(0; 2) = a & "=" & d            ElseIf b = 5 Then                e = Range("b" & c).Value                If e = "+" Then                    u = Range("d" & c + 1).Value                Else                    u = "(" & Range("d" & c).Value & "*-1)"                End If                x = "+"                If d = "" Then x = ""                d = d & x & u                a.Offset(0; 1) = "=" & Replace(d; ","; ".")                a.Offset(0; 2) = a & "=" & d            End If        Next    Next    Application.ScreenUpdating = ТrueEnd Sub
[/vba]

Автор - Nic70y
Дата добавления - 11.08.2022 в 09:03
msi2102 Дата: Четверг, 11.08.2022, 12:43 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Ну тогда UDF

Public Function Сумма_А(ByRef znak As Range, znach As Range, Optional v As Byte)
Dim n As Integer, c As Double, i As Double
On Error GoTo ErrHand
arr1 = znak.Value
arr2 = znach.Value
For n = LBound(arr1) To UBound(arr1) Step 2
    If arr1(n, 1) <> "-" Then
        arr1(n, 1) = "+"
        Select Case v
            Case Is = 0, 1: k = 0
            Case Is = 2: k = 1
        End Select
        i = 1
    Else
        Select Case v
            Case Is = 0, 2: k = 0
            Case Is = 1: k = 1
        End Select
        i = -1
    End If
    If arr2(n + k, 1) <> "" And arr2(n + k, 1) <> 0 Then m = m & "+" & arr2(n + k, 1) * i: c = c + arr2(n + k, 1) * i
Next n
Select Case v
    Case Is = 0: s = "A"
    Case Is = 1: s = "es" & ChrW(916)
    Case Is = 2: s = "ei" & ChrW(916)
End Select
Сумма_А = Replace(s & "=" & Mid(m, 2) & "=" & c, "+-", "-")
Exit Function
ErrHand:
Сумма_А = "Ошибка"
End Function


=Сумма_А("Диапазон_знаков";"Диапазон_значений";"0 или ""-сумма А, 1-сумма es, 1-сумма ei")
К сообщению приложен файл: 2110611_3.xlsm (21.6 Kb)


Сообщение отредактировал msi2102 - Четверг, 11.08.2022, 12:44
 
Ответить
СообщениеНу тогда UDF

[vba]
Public Function Сумма_А(ByRef znak As Range, znach As Range, Optional v As Byte)Dim n As Integer, c As Double, i As DoubleOn Error GoTo ErrHandarr1 = znak.Valuearr2 = znach.ValueFor n = LBound(arr1) To UBound(arr1) Step 2    If arr1(n, 1) <> "-" Then        arr1(n, 1) = "+"        Select Case v            Case Is = 0, 1: k = 0            Case Is = 2: k = 1        End Select        i = 1    Else        Select Case v            Case Is = 0, 2: k = 0            Case Is = 1: k = 1        End Select        i = -1    End If    If arr2(n + k, 1) <> "" And arr2(n + k, 1) <> 0 Then m = m & "+" & arr2(n + k, 1) * i: c = c + arr2(n + k, 1) * iNext nSelect Case v    Case Is = 0: s = "A"    Case Is = 1: s = "es" & ChrW(916)    Case Is = 2: s = "ei" & ChrW(916)End SelectСумма_А = Replace(s & "=" & Mid(m, 2) & "=" & c, "+-", "-")Exit FunctionErrHand:Сумма_А = "Ошибка"End Function
[/vba]
=Сумма_А("Диапазон_знаков";"Диапазон_значений";"0 или ""-сумма А, 1-сумма es, 1-сумма ei")

Автор - msi2102
Дата добавления - 11.08.2022 в 12:43
astashov_michail@tutby Дата: Четверг, 11.08.2022, 21:31 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, огромное СПАСИБО, за проделанную Вами работу, но к моему стыду, по мимо того что у меня эксель 2016, так ещё и макросами не дружу :(. и по этому если изменятся немного условия в переменных я наверное не разберусь в VBA. Буду пробовать как-нибудь по старинки пробовать формулами справится. ещё раз спасибо


astashovM..
 
Ответить
Сообщениеmsi2102, огромное СПАСИБО, за проделанную Вами работу, но к моему стыду, по мимо того что у меня эксель 2016, так ещё и макросами не дружу :(. и по этому если изменятся немного условия в переменных я наверное не разберусь в VBA. Буду пробовать как-нибудь по старинки пробовать формулами справится. ещё раз спасибо

Автор - astashov_michail@tutby
Дата добавления - 11.08.2022 в 21:31
msi2102 Дата: Пятница, 12.08.2022, 08:36 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
так ещё и макросами не дружу :(

Так в чем проблема, подружитесь, там не так сложно как Вам кажется, по крайней мере, для того, чтобы скопировать код макроса в стандартный модуль, нужно нажать три кнопки. Почитайте ТУТ или ТУТ

Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
и по этому если изменятся немного условия в переменных я наверное не разберусь в VBA
Последняя функция из сообщения №14, частично решает эту проблему. например если будет не три строки, а 5 или 6 ей без разницы, она их обработает, главное, чтобы формат таблицы сохранялся
К сообщению приложен файл: 6663287.xlsm (26.0 Kb)
 
Ответить
Сообщение
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
так ещё и макросами не дружу :(

Так в чем проблема, подружитесь, там не так сложно как Вам кажется, по крайней мере, для того, чтобы скопировать код макроса в стандартный модуль, нужно нажать три кнопки. Почитайте ТУТ или ТУТ

Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
и по этому если изменятся немного условия в переменных я наверное не разберусь в VBA
Последняя функция из сообщения №14, частично решает эту проблему. например если будет не три строки, а 5 или 6 ей без разницы, она их обработает, главное, чтобы формат таблицы сохранялся

Автор - msi2102
Дата добавления - 12.08.2022 в 08:36
Nic70y Дата: Пятница, 12.08.2022, 08:55 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 9133
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
по старинки
апдэйт
не, че-то не допилил, может потом.

теперь вроде норм.
К сообщению приложен файл: 4999555.xlsx (12.6 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 12.08.2022, 11:05
 
Ответить
Сообщение
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
по старинки
апдэйт
не, че-то не допилил, может потом.

теперь вроде норм.

Автор - Nic70y
Дата добавления - 12.08.2022 в 08:55
msi2102 Дата: Пятница, 12.08.2022, 11:04 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 430
Репутация: 131 ±
Замечаний: 0% ±

Excel 2019
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
как-нибудь по старинки пробовать формулами

Если есть функция "=СЦЕП()" (по моему она появилась как раз 2016), с доп столбцом (наверное возможно и без него, но лень думать)
Доп.столбец:
E2:
=ЕСЛИ(B2="+";D2;-D3)

E3:
=ЕСЛИ(B2="+";D3;-D2)

Выделить обе ячейки и протянуть вниз.
A:
="A="&ЕСЛИ(B2="-";"-";"")&ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;"+"&(C2:C7*(B2:B7&1));""));"+-";"-");2;999)

esΔ:
="esΔ="&ЕСЛИ(ЛЕВСИМВ(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");1)="+";ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");2;999);ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-"))

eiΔ:
="eiΔ="&ЕСЛИ(ЛЕВСИМВ(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");1)="+";ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");2;999);ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-"))

Если не будет смущать "+" в начале, то можно короче
="esΔ="&ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-")

="eiΔ="&ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-")
К сообщению приложен файл: 1941499.xlsx (12.8 Kb)


Сообщение отредактировал msi2102 - Пятница, 12.08.2022, 12:08
 
Ответить
Сообщение
Цитата astashov_michail@tutby, 11.08.2022 в 21:31, в сообщении № 15 ( писал(а)):
как-нибудь по старинки пробовать формулами

Если есть функция "=СЦЕП()" (по моему она появилась как раз 2016), с доп столбцом (наверное возможно и без него, но лень думать)
Доп.столбец:
E2:
=ЕСЛИ(B2="+";D2;-D3)

E3:
=ЕСЛИ(B2="+";D3;-D2)

Выделить обе ячейки и протянуть вниз.
A:
="A="&ЕСЛИ(B2="-";"-";"")&ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;"+"&(C2:C7*(B2:B7&1));""));"+-";"-");2;999)

esΔ:
="esΔ="&ЕСЛИ(ЛЕВСИМВ(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");1)="+";ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");2;999);ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-"))

eiΔ:
="eiΔ="&ЕСЛИ(ЛЕВСИМВ(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");1)="+";ПСТР(ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-");2;999);ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-"))

Если не будет смущать "+" в начале, то можно короче
="esΔ="&ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-")

="eiΔ="&ПОДСТАВИТЬ(СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=1;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");""));"+-";"-")

Автор - msi2102
Дата добавления - 12.08.2022 в 11:04
astashov_michail@tutby Дата: Пятница, 12.08.2022, 16:00 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, Всем большое спасибо за помощь


astashovM..
 
Ответить
Сообщениеmsi2102, Всем большое спасибо за помощь

Автор - astashov_michail@tutby
Дата добавления - 12.08.2022 в 16:00
astashov_michail@tutby Дата: Пятница, 12.08.2022, 16:20 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 0 ±
Замечаний: 100% ±

2016
msi2102, СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");"")) пишет #ИМЯ?
и если изменяю значение переменной, то тоже пишет #ИМЯ?


astashovM..

Сообщение отредактировал astashov_michail@tutby - Пятница, 12.08.2022, 16:23
 
Ответить
Сообщениеmsi2102, СЦЕП(ЕСЛИ(ОСТАТ(СТРОКА(B2:B7);2)=0;ЕСЛИ(E2:E7<>0;"+"&E2:E7;"");"")) пишет #ИМЯ?
и если изменяю значение переменной, то тоже пишет #ИМЯ?

Автор - astashov_michail@tutby
Дата добавления - 12.08.2022 в 16:20
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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