2017-06-15 145 views
0

試圖放置式到小區:解析式使用VBA

IF(TEXT(A4,」ddd」)=「Fri」,IF(TEXT(B4-INT(B4),」hh:mm:ss」)>=TEXT(TIME17,0,0 "),」hh:mm:ss」),」flag」," "),IF(TEXT(A4,」ddd」)=「Sat」,」flag」,IF(TEXT(A4,」ddd」)=「Sun」,」flag」,IF(TEXT(A4,」ddd」)=「Mon」,IF(TEXT(B4-INT(B4),」hh:mm:ss」)<=TEXT(TIME("8,30,0"),」hh:mm:ss」),」Flag」,"」))))) 

進入細胞,但使用CHR(34)代替「。使得它太長在字符長度使用定義的名稱然後嘗試和在‘指的是:’用於在評估公式,即=evaluate("T1"); T1有作爲上述公式的文本版本

Create Date Create Time 
03/05/17 07:28 AM 
09/05/17 07:32 AM 
13/05/17 07:20 AM 
16/05/17 04:57 PM 
17/05/17 10:17 AM 

電子表格中包含格式爲時間A柱和日期時間日期B列,我如果票面工作了特定線路在Fri 5pmMon 8:30am之間。

+0

除了所有不正確的雙引號(即''和'''而不是'''),您的公式在'TEXT(TIME17,0,0「),hh :mm:ss「)'和'TIME(」8,30,0「)'。你正在使用的實際公式是什麼? – YowE3K

回答

0

如果你只是想要一個更短的公式,你可以使用

=IF(OR(WEEKDAY(A4,2)>5,AND(WEEKDAY(A4,2)=5,B4>17/24),AND(WEEKDAY(A4,2)=1,B4<8.5/24)),"Flag","") 

在VBA中,可能被編碼爲(例如):

Range("C4").Formula = "=IF(OR(WEEKDAY(A4,2)>5,AND(WEEKDAY(A4,2)=5,B4>17/24),AND(WEEKDAY(A4,2)=1,B4<8.5/24)),""Flag"","""") 

上述公式假設B列只包含時間,但如果它包含日期時間,則應該使用:

=IF(OR(WEEKDAY(B4,2)>5,AND(WEEKDAY(B4,2)=5,MOD(B4,1)>17/24),AND(WEEKDAY(B4,2)=1,MOD(B4,1)<8.5/24)),"Flag","") 

在VBA中,可能被編碼爲(例如):

Range("C4").Formula = "=IF(OR(WEEKDAY(B4,2)>5,AND(WEEKDAY(B4,2)=5,MOD(B4,1)>17/24),AND(WEEKDAY(B4,2)=1,MOD(B4,1)<8.5/24)),""Flag"","""") 

糾正你原來的公式是什麼,我認爲你想要它是會給你的VBA代碼(實例):

Range("C4").Formula = "=IF(TEXT(A4,""ddd"")=""Fri"",IF(TEXT(B4-INT(B4),""hh:mm:ss"")>=TEXT(TIME(17,0,0),""hh:mm:ss""),""flag"","" ""),IF(TEXT(A4,""ddd"")=""Sat"",""flag"",IF(TEXT(A4,""ddd"")=""Sun"",""flag"",IF(TEXT(A4,""ddd"")=""Mon"",IF(TEXT(B4-INT(B4),""hh:mm:ss"")<=TEXT(TIME(8,30,0),""hh:mm:ss""),""Flag"","""")))))" 

存在這樣的幾件事情是很容易被簡化,如:

  • TEXT(TIME(17,0,0),""hh:mm:ss"")可以更簡單地寫成"17:00:00"(它是將會有一個固定的結果的固定時間),並
  • TEXT(B4-INT(B4),""hh:mm:ss"")可以簡化爲TEXT(B4, ""hh:mm:ss"")(時間線將是你是否計算它的同具體日期,還是您在1900年1月0日計算)。
+0

是的 - 在文本中的錯誤(時間17,0 ..... – CamBotting

+0

撿起來感謝修正的公式使用工作日和國防部工程治療。 – CamBotting