Имеется ячейка A1 , в ней текущая дата и время.
Во второй ячейке (А2) собственноручно вводим дату и время.
В третьей ячейке (А3) разница между второй и первой ячейкой (А2 - А1).
Как сделать так, чтобы получив однажды результат, третья ячейка больше не изменялась при изменении текущих даты и времени?
Спасибо заранее если кто-то поможет!
Как в программе Excel получив значение сделать так чтобы оно не изменялось?
Модератор: Naeel Maqsudov
преобразовывайте формулу в значение. Через какой-нибудь sheet_change. К примеру у вас небольшой последовательно заполняемый диапазон (без пустых строк посередине). Для любого изменения на листе указываете что-нибудь вроде:
dim used_range_start as boolean
used_range_start = false
with thisworkbook.sheets(1)
For each cel in .range(.range("A2").entirecolumn.address)
If used_range_start = false then
If cel.address = .range("адрес ячейки заголовка").address then
used_range_start = true
end if
else
If cel = "" then
exit for
else
If cel <> "" and istr(cel.offset(1,0).formula,"=") <> 0 then
cel.offset(1,0) = cel.offset(1,0).value
end if
end if
end if
next
used_range_start = false
end with
dim used_range_start as boolean
used_range_start = false
with thisworkbook.sheets(1)
For each cel in .range(.range("A2").entirecolumn.address)
If used_range_start = false then
If cel.address = .range("адрес ячейки заголовка").address then
used_range_start = true
end if
else
If cel = "" then
exit for
else
If cel <> "" and istr(cel.offset(1,0).formula,"=") <> 0 then
cel.offset(1,0) = cel.offset(1,0).value
end if
end if
end if
next
used_range_start = false
end with
DenPorsche
Теперь, после ввода значения в пустую ячейку A2 в ячейке A3 появится требуемый результат, который не будет изменятся в дальнейшем, при изменении значений ячеек A1 и A2.
Для того, чтобы обновить результат в ячейке A3, потребуется очистить содержимое ячеек A2 и A3 и в ячейку A2 вставить новое требуемое значение.
Если я правильно понимаю, то в ячейке A1 находится функция, например, "=СЕГОДНЯ()" (т.е. значение всегда присутствует), значит ячейка A3 получить значение "однажды" может только тогда, когда пользователь первый раз вводит значение в ячейку A2, т.е. в пустую ячейку. Если так, то достаточно в модуль требуемого листа поместить код:Как сделать так, чтобы получив однажды результат, третья ячейка больше не изменялась при изменении текущих даты и времени?
Код: Выделить всё
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [A2].Address Then If [A2] <> "" And [A3] = "" Then [A3] = [A2] - [A1]
End Sub
Для того, чтобы обновить результат в ячейке A3, потребуется очистить содержимое ячеек A2 и A3 и в ячейку A2 вставить новое требуемое значение.