我需要使用Now()
更新Cell E2,以便更改单元格D2
中的任何值。
注意D2
值取决于许多其他单元格,例如A2, B2 and C2
。
我尝试了Worksheet_Change
,但这会触发手动更新,我需要更新E2
的单元格也会自动更新(即不通过手动更新)。
任何解决方案,其中单元格A2
,B2
和C2
获取实时Feed,而D2具有基于它们的公式,是可以接受的。
现在,如果D2
发生变化,我需要E2
Now()
日期和时间。
答案 0 :(得分:1)
您可以将 Calculate 事件与内存变量一起使用:
DECLARE @tt_text TABLE(id INT IDENTITY(1,1),templatebody VARCHAR(MAX));
INSERT INTO @tt_text(templatebody)VALUES
('This is to inform #first_name# about the issues regarding #location#');
DECLARE @tt_repl TABLE(id INT IDENTITY(1,1),variable VARCHAR(256),template_value VARCHAR(8000));
INSERT INTO @tt_repl(variable,template_value)VALUES
('#first_name#','Joseph William'),
('#location#','Alaska');
;WITH cte AS (
SELECT
t.id,
l=1,
templatebody=REPLACE(t.templatebody,r.variable,r.template_value)
FROM
@tt_text AS t
INNER JOIN @tt_repl AS r ON r.id=1
UNION ALL
SELECT
t.id,
l=l+1,
templatebody=REPLACE(t.templatebody,r.variable,r.template_value)
FROM
cte AS t
INNER JOIN @tt_repl AS r ON r.id=t.l+1
)
UPDATE
@tt_text
SET
templatebody=cte.templatebody
FROM
@tt_text AS t
INNER JOIN cte ON
cte.id=t.id
WHERE
cte.l=(SELECT MAX(id) FROM @tt_repl);
/* -- if instead you wanted to select the replaced strings, comment out
-- the above UPDATE statement, and uncomment this SELECT statement:
SELECT
templatebody
FROM
cte
WHERE
l=(SELECT MAX(id) FROM @tt_repl);*/
SELECT*FROM @tt_text;
答案 1 :(得分:0)
我通过使用Range对象的Precedent属性来解决问题。
我检查了更改的单元格是否是我的先例的一部分,如果是,那么使用目标行(已更改的单元格),我移动到我所需的列(这是静态的)完成了我的逻辑。
谢谢, 萨拉
Private Sub Worksheet_Change(ByVal Target As Range) Dim keycells As Range 设置keycells = Sheets(“FUT_CALLS-1”)。范围(“AD1:AD1”)。EntireColumn
如果不相交(Target,keycells.Precedents)则没有任何结果
If (Sheets("FUT_CALLS-1").Cells(Target.Row, 30).Value = "BUY" Or Sheets("FUT_CALLS-1").Cells(Target.Row, 30).Value = "SELL") And Sheets("FUT_CALLS-1").Cells(Target.Row, 30).Value <> Sheets("MyCodeSheet").Cells(Target.Row, 1).Value Then
Sheets("FUT_CALLS-1").Cells(Target.Row, 32).Value = Now()
Sheets("MyCodeSheet").Cells(Target.Row, 1).Value = Sheets("FUT_CALLS-1").Cells(Target.Row, 30).Value
End If
结束如果 结束子