我使用工作表進行項目計劃,其中有一個名爲「狀態」的列,我可以從下拉菜單中選擇「完成」或「打開」。在另一個單元格中,我輸入了我的ECD(預計完成日期)。凍結日期,一旦輸入?
我想將任務的狀態設置爲「完成」,另一個名爲ACD(實際完成日期)的單元應顯示當前日期並在此之後凍結單元格。使用TODAY或NOW功能將每天都會更改日期。
有沒有可以爲我做的公式或腳本?
我使用工作表進行項目計劃,其中有一個名爲「狀態」的列,我可以從下拉菜單中選擇「完成」或「打開」。在另一個單元格中,我輸入了我的ECD(預計完成日期)。凍結日期,一旦輸入?
我想將任務的狀態設置爲「完成」,另一個名爲ACD(實際完成日期)的單元應顯示當前日期並在此之後凍結單元格。使用TODAY或NOW功能將每天都會更改日期。
有沒有可以爲我做的公式或腳本?
承擔的「做」是在細胞A1
和日期/時間在B1
=IF(A1="Done",IF(LEN(B1)>0,B1,NOW()),"")
但是,你需要打開迭代
也如果刪除「完成」細胞會空再次
你在找什麼是一個宏,而不是一個公式。此解決方案假設您的ECD列爲'A'(列1),那麼您的狀態列爲'B'列(列2)
步驟1)按Alt + F11,這將打開VBA中的代碼編輯器。
步驟2)複製和粘貼下面的代碼到您的「片」您的公式駐留英寸
步驟3)保存工作簿作爲一個啓用宏的電子表格。 (XLSM)。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If (Target.Columns.Count = 1 And Target.Column = 2 And Target.Rows.Count = 1) Then
'Check every row, currently this will get executed once
For Each cell In Target.Cells
'Make sure the value is set to 'done'
If (UCASE(cell.Value) = "DONE") Then
'Using the current modified row, set column 1 to Today
'Note: Now() is the same as Today in VBA
Target.Worksheet.Cells(cell.row, 1).Value = Now()
End If
Next cell
End If
End Sub
注意:如果只有一個單元格被設置爲'完成',該宏纔會被執行。您可以通過刪除FIRST'if'語句的'Target.Rows.Count = 1'部分將其更改爲在多個單元格上工作。如果您通過單擊並將「完成」值拖動到多個單元格來「擴展」,則可能會發生這種情況。注2:如果您想分配一次日期,並且防止日期不斷變化,即使您將該字段再次修改爲「完成」。將最後一條'if'聲明更改爲以下內容:
If (UCASE(cell.Value) = "DONE" And Target.Worksheet.Cells(cell.row, 1).Value = "") Then
對不起,我沒有提到它是谷歌表。所以我不能使用makros。 https://docs.google.com/spreadsheets/d/1r5419_lbu116hPehz17KYs_CMRmZwtihJJQVLWmJuZ0/edit#gid=0 –
我愛你COM增值稅!
但是,不要被頑皮的孩子,而不是分享您的代碼...
保持A列空,在表單提交或者在該行A列的編輯將顯示當前的日期和它不會改變:-)
function onEdit() {
var dateColNum = 1 //column F
var ss1 = SpreadsheetApp.getActiveSpreadsheet();
//set date in same row as edit happens, at fixed column
var nextCell = ss1.getActiveSheet().getRange(ss1.getActiveRange().getLastRow(), dateColNum, 1, 1)
if(nextCell.getValue()==='')//是空的嗎? nextCell.setValue(new Date());
}
你需要使用VBA,看一下[工作表更改(https://msdn.microsoft.com/en-us/library/office/ff839775.aspx)事件,你可以有一個宏來檢查你的單元格,看看數據是否已經改變,如果它有'Today()'或'Now()',則複製/粘貼值。 – BruceWayne
反過來做。在ACD中CTRL +';',然後在單元格不爲空時將狀態填充爲「完成」。 – pnuts
這是工作表https://docs.google.com/spreadsheets/d/1r5419_lbu116hPehz17KYs_CMRmZwtihJJQVLWmJuZ0/edit#gid=0 –