Excel VBA問題(分析資料)

2010-01-09 3:11 am
Dear All
因剛接觸VBA不久,又不大會使用VBA,爬文也求不到,礙於工作急於用到,懇請大大們幫忙。謝謝
Ex1.
Time1Time2
AA23:5000:20
AB06:3507:02
AA12:2013:00
AA02:3203:02
AB22:2123:21
煩請計數上列AA及AB的次數與AA及AB時間差之和,分別寫入某儲存格。
Ex2.
Time1Time2
AA03:0004:25
AB03:0603:58
AA02:5804:40
AA02:5004:20
AB03:0004:36
煩請幫忙分析Time1欄底下大於等於3分鐘;Time2欄底下大於等於4分半鐘,符合條件的請轉換成紅色字體。
以上...請益大大們的幫忙,謝謝。
更新1:

Sorry,補充修改一下,兩各列子都是3欄N列的資料,想做分析,煩請幫忙,感恩 EX1 項目1 Time1 Time2 AA 23:50 00:20 AB 06:35 07:02 AA 12:20 13:00 AA 02:32 03:02 AB 22:21 23:21

更新2:

謝謝發表在意見欄中的高手,大大的VBA一Run,清楚明瞭,另外也謝謝幫助我這個問題的高手們,謝謝!

回答 (8)

2010-01-11 10:08 am
✔ 最佳答案
算時間差不用VBA,公式即可
在D2輸入公式
=IF(HOUR(C2)=0,IF(HOUR(B2)=0,C2-B2,"24:00"-B2+C2),C2-B2)
然後複製下來即OK
加總也不難,用SUMIF
例如
=SUMIF(A2:A6,"AA",D2:D6)
就是加總AA的時間差的總和

PS:時間格式稍微調一下就OK了


2010-01-11 09:05:57 補充:
次數用
=COUNTIF(A2:A6,"AA")

2010-01-11 09:36:00 補充:
檢查B那一欄的巨集

Sub Macro1()
' 快速鍵 Ctrl+b
Dim n As Integer
Dim tmpStr() As String
Dim seconds As Integer
n = 2
Do While Worksheets("Sheet2").Range("B" & n) <> ""
If Worksheets("Sheet2").Range("B" & n).Value <> "" Then
tmpStr = Split(Worksheets("Sheet2").Range("B" & n).Text, ":")

2010-01-11 09:36:06 補充:
seconds = tmpStr(0) * 60 + tmpStr(1)
If seconds > 180 Then
Worksheets("Sheet2").Range("B" & n).Font.ColorIndex = 3
End If
End If
n = n + 1
Loop

2010-01-11 09:36:34 補充:
End Sub

2010-01-11 09:50:31 補充:
C那一欄就把"B"改成"C"
180改成270
資料我放在"Sheet2"
你要依你的資料所在來做修改
其實第一個時間差的問題
你綜合一下意見欄裡的各位大大的意見
還有我這個巨集的的方式應改也可以想出解決之道
這巨集裡Do While的敘述
讓你有不管增加多少資料都不用改程式的好處

2010-01-11 10:21:58 補充:
另外有一種巨集和公式混和應用的方法
像第一個問題
就可以把公式以字串的方式填入你要放置的位置

t = "=IF(HOUR(C2)=0,IF(HOUR(B2)=0,C2-B2," & """" & "24" & ":" & "00" & """" & "-B2+C2),C2-B2)"
Worksheets("Sheet2").Range("D" & 2).Text = t
就是要處理一些特殊字員比較麻煩
然後把它選取起來
往下複製
至於要複製到哪為止呢
當然還利用Do While

2010-01-11 10:29:13 補充:
不好意思
把 seconds > 180
改成
seconds >= 180
2014-10-11 3:56 am
所以如果你想婚的念頭已經確定
就去找一家評價好一點的婚友社!
行動吧!
這是我之前參加的婚友社我覺得不錯

或搜尋 紅娘李姐
2014-09-03 4:44 pm
所以如果你想婚的念頭已經確定
就去找一家評價好一點的婚友社!
行動吧!
這是我之前參加的婚友社我覺得不錯

或搜尋 紅娘李姐
2014-08-02 6:50 pm
所以如果你想婚的念頭已經確定
就去找一家評價好一點的婚友社!
行動吧!
這是我之前參加的婚友社我覺得不錯

或搜尋 紅娘李姐
2014-01-25 7:50 am
如果你很確定自己很想結婚
婚友社的確是一個有效率的管道
年紀越大壓力越大
以前我去婚友社時
年輕的女生機會總是比較多
時間總是不站在女生這邊的
所以如果你想婚的念頭已經確定
就去找一家評價好一點的婚友社!
行動吧!
這是我之前參加的婚友社我覺得不錯

或搜尋"紅娘李姐"

不過還是建議你自己去諮詢過看是否適合你!
2010-01-09 9:41 pm
請問:
Ex2.
Time1Time2
AA03:0004:25

03:00 是8時0分,還是3分0秒?


02:50 是 大於等於3分鐘?

2010-01-10 21:41:08 補充:
Sub x()

[F2] = "AA 的次數"
[F3] = "AB 的次數"

[G2] = Application.CountIf(Range("A:A"), "AA")
[G3] = Application.CountIf(Range("A:A"), "AB")

2010-01-10 21:41:51 補充:
'''''''
Dim AA_diffsum%
Dim AB_diffsum%

For R = 2 To 6
b = Cells(R, 2).Text
b = Split(b, ":")
b = b(0) * 60 + b(1)

c = Cells(R, 3).Text
c = Split(c, ":")
c = c(0) * 60 + c(1)
If c < b Then c = c + 3600

diff = c - b

2010-01-10 21:42:32 補充:
If Cells(R, 1) = "AA" Then
AA_diffsum = AA_diffsum + diff
Else
AB_diffsum = AB_diffsum + diff
End If

2010-01-10 21:42:37 補充:
[F4] = "AA 時間差之和"
[F5] = "AB 時間差之和"
[G4] = Int(AA_diffsum / 60) & "分" & (AA_diffsum Mod 60) & "秒"
[G5] = Int(AB_diffsum / 60) & "分" & (AB_diffsum Mod 60) & "秒"
Next


End Sub

2010-01-10 21:44:06 補充:
以上是問題1的VBA。

至於問題2就請版大自己試做。
2010-01-09 7:06 pm
抱歉,是使用時間.
說的有點模糊,主要訴求是
1.AA和AB各使用次數,與AA和AB各使用時間之合,分別的紀錄到別的儲存格上

2010-01-09 19:32:42 補充:
抱歉
03:00 表示3分鐘
02:50 表示2分50秒,所以小於3分鐘

2010-01-12 19:51:12 補充:
謝謝,問題已經解決了。
2010-01-09 6:26 pm
請說明「AA和AB之間的時間差」是什麼?


收錄日期: 2021-04-26 20:17:59
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20100108000016KK05690

檢視 Wayback Machine 備份