Страницы: 1
RSS
В формулу добавить значение из другой ячейки
 
Уважаемые знатоки Экселя, подскажите пожалуйста, как в формулу добавить значение из другой ячейки и протянуть формулу до последней ячейки в столбце? Формула должна быть не постоянной А2*В2, а меняться в соответствии с адресом ячеек (А3*В3, А4*В4). В итоге чтобы получилось А2*В2+3, А3*В3-4.
Пример я прикладываю с разработанным мной макросом. Он в частично сделан, только адреса ячеек типа А2*В2 не могу сообразить, как добавить.
 
не совсем понятно но может то
Код
=ЕСЛИ(E2="";"";A2*B2-E2) 
Лень двигатель прогресса, доказано!!!
 
Код
Range("C2:C6").Formula = "=A2*B2+E2"
 
Изменено: Johny - 01.12.2014 09:13:29
There is no knowledge that is not power
 
Нет, так не годится. Надо именно чтобы изменилась формула не на =А2*В2-Е2, а на =А2*В2-1
Изменено: Tebenkov Igor - 01.12.2014 09:14:35
 
А вы внимательно прочтите, как вы поясняете в экселевском файле. Как попросили, так и сделали.
There is no knowledge that is not power
 
Tebenkov Igor, зачем МАКРОСОМ вставлять на лист ФОРМУЛУ? Считайте все что нужно в коде и выгружайте готовый результат на лист.
Согласие есть продукт при полном непротивлении сторон
 
Готовый результат это конечно можно. Так проще. Но мне нужно именно так, чтобы видно было где и сколько добавлено. Если это невыполнимо, тогда я смирюсь с тем, что есть, но лёгкий путь это не для нас :)
 
Может я чего-то недопонимаю, но разве в стобце Е не
Цитата
видно было где и сколько добавлено
?
 
Можно конечно вот так, но это не формула, а всего лишь текстовое пояснение, т.е. она не считает, добавил столбец с формулой, а в столбце рядом пишется что эта формула делает.
 
Просто я планировал этот столбец "Е" потом после всех манипуляций удалить.
 
Можно еще чуть-чуть "украсивить" )) Формула для E2:

Код
=ЕСЛИ(F2="";"A"&СТРОКА(A2)&"*"&"B"&СТРОКА(B2);"A"&СТРОКА(A2)&"*"&"B"&СТРОКА(B2)&ЕСЛИ(F2>0;"+"&F2;F2))
 
 
Ну нет, так не пойдёт. Надо код макроса править, чтобы выглядело, как будто это я в формуле ручками добавил "+7" или "-4".
 
Так?

Код
 Sub SumDop()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastRow
    m = Cells(i, 5)
 If m Then
        Cells(i, 4).Value = "=" & Cells(i, 1).Address & "*" & Cells(i, 2).Address & "+" & m
 Else
 End If
 Next
End Sub
 
Вот это уже больше подходит! Получается =$A$2*$B$2+-1 . Ну эти доллары можно будет удалить потом через замену символов. А вот как реализовать, если при получении  "+ -", (плюс и минус) в формулу записывался только минус "-" =A2*B2-1
 
Код
Sub SumDop()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastRow
    m = Cells(i, 5)
 If m>0 Then
        Cells(i, 4).Value = "=" & Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) _ 
& "*" & Cells(i, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "+" & m
 ElseIf m<0 Then
        Cells(i, 4).Value = "=" & Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) _ 
& "*" & Cells(i, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "-" & abs(m)
 End If
 Next
End Sub
Изменено: JayBhagavan - 01.12.2014 12:01:17

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Крутяк! Большое Спасибо! Я вот тут ещё забыл указать в тексте, что если нечего плюсовать, то формула остаётся в покое. Ну я тут немножко доработал под свои нужды. Теперь формула работает.
Код
Sub SumDop()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastRow
    m = Cells(i, 5)
 If m > 0 Then
         Cells(i, 4).Value = "=" & Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& "*" & Cells(i, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "+" & m
Cells(i, 4).Font.ColorIndex = 3
 ElseIf m < 0 Then
         Cells(i, 4).Value = "=" & Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& "*" & Cells(i, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "-" & Abs(m)
Cells(i, 4).Font.ColorIndex = 3
  Else
         Cells(i, 4).Value = "=" & Cells(i, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& "*" & Cells(i, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False)
 End If
 Next
 End Sub 
Изменено: Tebenkov Igor - 01.12.2014 12:39:03
 
Между тэгами кода тэги цветов не работают
 
А, так это вы Vikttur исправили код без тегов.  А я подумал, что код сам исправился  :) )))
 
Сам исправился. Я же пишу - выделение цветом в коде не работает.

Если Вы о самом коде - иногда правлю то, что пользователи сами не делают.
Страницы: 1
Читают тему
Наверх