我有一列代表持續時間的數據,例如 33:15 - 30 分鐘 15 秒; 1:05:00 - 1小時5分鐘等
如果我嘗試對 AZ 進行排序,則 1 小時會在 30 分鐘之前排序。
有沒有辦法格式化資料以使其正確排序?格式化解決方案優於將此資料轉換為秒或其他內容。
答案1
歡迎來到 Excel 的精彩時代世界。起初令人困惑,但一旦你知道它們是如何運作的,就會很強大。
我認為在您的情況下沒有辦法僅通過格式化來做到這一點。但是,這應該可行(我假設您的所有時間都在 A 列中)
-Create this formula in B1 and copy it all the way down:
=IF(A1>=1,A1/60,A1)
-Format Column B as h:mm:ss
-Select Column B and Copy, then Paste Special, Values.
-Sorting Column B should now work fine.
這就是簡短的答案。如果您想了解發生了什麼以及公式是如何得出的,請繼續閱讀:
1.
-Start a new sheet.
-In A1, type 1:05:00
-Click on A1, then Format, Cells. Note it has applied a custom format of h:mm:ss
Excel 非常聰明,而且該數字相當明確,因此它假設您的意思是小時:分鐘:秒並相應地設定格式。
2.
-In A2, type 33:15
-Note how it automagically changed it to 33:15:00
-Click on A2, then Format, Cells. Note a custom format of [h]:mm:ss
這是模稜兩可的。您的意思是「33 分 15 秒」還是「33 小時 15 分鐘」? Excel 不確定。它的行為是假設您指的是小時和分鐘。 h 周圍的 [] 基本上表示「在小時部分顯示超過 24 小時」。
3.
-In A3, type 0:33:15 (note the 0: before)
-Click on A3, then Format, Cells. Note a custom format of h:mm:ss
由於您已經消除了歧義,它再次假設您再次表示小時:分鐘:秒並相應地格式化。
4.
-In A4, type 23:15
-Note how it leaves it as 23:15
-Click on A4, then Format, Cells. Note a custom format of h:mm
W..T..F?為什麼它的格式與#2 不同?因為您輸入的數字小於 24(即小時) - 仍然不明確,並且它仍然假設您的意思是小時和分鐘...但格式不同。
5.
-In A5, type 1:00:00
-Click on A5, then Format, Cells. Note a custom format of h:mm:ss
-Change the format to General and note that the underlying number is .041667 (i.e. the percentage of a day)
6.
-In A6, type 24:00:00
-Click on A6, then Format, Cells. Note a custom format of [h]:mm:ss
-Change the format to General and note that the underlying number is 1 (i.e. a full day)
差不多了...
7.
-Now click on B2 and enter this formula:
=A2/60 (i.e. convert from hours to minutes)
-Click on B2, then Format, Cells. Note a custom format of [h]:mm:ss
-Note that it now shows 0:33:15, which is what you want
8.
-Now click on B1 and enter the same formula:
=A1/60 (i.e. convert from hours to minutes)
-Click on B1, then Format, Cells. Note a custom format of h:mm:ss
-Note that it shows 0:01:05 - damn - that's *not* what you want.
保持目標...
9.
-Click on B1 again and enter this formula instead:
=IF(A1>=1,A1/60,A1)
-Click on B1, then Format, Cells. Enter a custom format of h:mm:ss
-Note that it still shows 1:05:00 (i.e. it didn't change it to 0:01:05)
基本上這個公式是:
-Checks to see if the number in a cell is greater than or equal to 1
-If it is greater than 1, divide by 60 (i.e. convert hours to minutes)
-If it's less than 1, leave it alone.
答案2
如果 Excel 將您的值解釋為實際時間,那麼它們將按數字排序,而不是按字母順序排序。但也存在問題。
如果您輸入分鐘和秒為 30:00,Excel 會將其解釋為 30 小時 0 分鐘。您必須輸入 30 分鐘作為 0:30:00 或 0:30。因此,這樣輸入的 30 分鐘將被解釋為大於輸入為 1:30 的一小時三十分鐘。輸入數字後應始終檢查公式欄,以確保 Excel 記錄了您想要輸入的值。
CompWiz 錯過了這種複雜性,而 Craig 的例程恰好可以解決您的特定問題。但是,即使該值小於一小時,您也必須輸入 h:mm:ss 格式的時間,這表示您的值始終會被正確解釋。
答案3
簡而言之...時間...如小時/分鐘/秒數實際上被排序為字元資料。 1 小於 30,1h 小於 30m,因為 1 小於 3。顯示為小時/分鐘/秒...或者分別輸入資料 00:30:00 和 01:00:00。
第一個是恰當的方法,但實現起來非常複雜...第二個更簡單且總是有效,因為 00: 每次都在 01: 之前。