我有使用 Bash 的默認時間格式(echo $date)格式化的日期,例如:
2021 年 12 月 24 日星期五 07:35:41(美國東部標準時間)
我無法更改此行為,因為我無權更改我們的 IT 解決方案。我需要能夠將這些日期加載到英國本地化的 Excel 中,但是由于日期、時區、時間等原因,任何嘗試使用通常的文本到列 DMY 方法都不起作用。
是提取資料并重新組合的唯一方法還是有更簡單的解決方案?
uj5u.com熱心網友回復:
試試這個功能。將其寫入模塊并從任何單元格呼叫。像 =makeDateFromStr(A1)
Function makeDateFromStr(ByVal someDate As String) As Date
On Error Resume Next
Dim var As Variant, Mu As Long
var = Split(someDate, " ") ' array to hold all parts of the string-date
Mu = (InStr("JanFebMarAprMayJunJulAugSepOctNovDec", var(1)) 2) / 3 ' a way to make short string month (Dec) to number
makeDateFromStr = DateSerial(var(5), Mu, var(2)) & " " & TimeValue(var(3)) ' putting all together
On Error GoTo 0
End Function
uj5u.com熱心網友回復:
據我所知,如果我們去掉 theEST和 week day FRI,我們可以獲得一個有效的日期值。注意:如果你想要作業日,你可以使用該函式WEEKDAY()來獲取值6,即星期五。(1 是星期天)。
因此,要擺脫作業日,您可以使用該RIGHT()功能。所有作業日都是 3 個字母和一個空格,所以我們需要去掉前 4 個字符,如下所示:
=RIGHT(A1;LEN(A1)-4)
你可以把它放在你的示例時間下面,所以把它放在單元格 A2 中。
要洗掉EST有點棘手,我們需要知道文本中的EST位置。為此,我們使用FIND():
=FIND("EST ";A2)
現在我們知道文本"EST "出現在 A2中的哪個位置。
然后我們可以使用一個簡單的REPLACE()函式,將“EST”替換為空。像這樣:
=REPLACE(A2;FIND("EST ";A2);4;"")
注:本4指的長度"EST "。
這適用于本示例,因此您可以使用不同的資料進行嘗試。如果它不能正常作業,請在下面發表評論,以及使用什么資料,我會調查它。
- 在A1 中輸入日期
- 把
=RIGHT(A1;LEN(A1)-4)在A2 - 將
=REPLACE(A2;FIND("EST ";A2);4;"")在A3
您也可以將其合并到 1 個單元格中:
=REPLACE(RIGHT(A1;LEN(A1)-4);FIND("EST ";RIGHT(A1;LEN(A1)-4));4;"")
然后,您可以將它放在 A1 中的日期旁邊,因此在 B1 中,并為所有匯入的日期向下拖動此公式。現在它應該適用于您的所有日期。
您還可以復制它們的值并替換原始日期,然后洗掉公式,您將擁有與一開始所期望的相同的布局和功能!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/396398.html
標籤:擅长
