Board logo

標題: [發問] 當符合條件時回傳Sample time & 其儲存格列號 [打印本頁]

作者: marklos    時間: 2014-12-5 23:12     標題: 當符合條件時回傳Sample time & 其儲存格列號

當符合current (A) <0.1 的條件時回傳Sample time & 其儲存格列號在指定位置[attach]19710[/attach]
作者: owen06    時間: 2014-12-8 16:35

回復 1# marklos


    要試看看vba嗎
作者: marklos    時間: 2014-12-9 10:11

回復 2# owen06


    可否請教VBA指令為何?
作者: owen06    時間: 2014-12-9 10:47

回復 3# marklos


    你下載我的附檔,開啟之後,設定好g2的值,按下右邊的按鈕,就可以了。
    按下alt+f11,可以進入vba編輯畫面,你可以研究看看。
    有問題可以再上來提出討論。
作者: marklos    時間: 2014-12-9 10:55

回復 4# owen06


    了解~感謝...有問題再請教.
作者: samwang    時間: 2014-12-9 13:32

回復 1# marklos

下面是陣列公式
G5=INDEX(B:B,SMALL(IF($D$2:$D$200=MAX(IF($D$2:$D$200<$G$2,$D$2:$D$200,"")),ROW($2:$200)),ROW($1:$1)))&""
H5=SMALL(IF($D$2:$D$200=MAX(IF($D$2:$D$200<$G$2,$D$2:$D$200,"")),ROW($2:$200)),ROW($1:$1))&""
作者: marklos    時間: 2014-12-9 13:59

回復 4# owen06

如果要把其儲存列號代入以下算式去計算其時間總數及總和該怎麼做?
  =COUNT(E2:E61)/3600
  =SUM(E2:E61)/3600
作者: owen06    時間: 2014-12-9 14:05

回復 6# samwang


    可是回傳出來的答案是第20列的資料耶,正確的應該是第61列不是嗎?
作者: owen06    時間: 2014-12-9 14:18

回復 7# marklos


    假設在h6跟h7要計算的話,改成這樣就行了
  1. Private Sub CommandButton1_Click()
  2. [g5,h5] = ""
  3. For Each cu In Range("d2:d" & [a65536].End(3).Row)
  4. If cu.Value < [g2] Then
  5.   [g5] = cu.Offset(0, -2).Value
  6.   [h5] = cu.Row
  7.   [h6] = Application.Count(Range("e2:e" & cu.Row)) / 3600
  8.   [h7] = Application.Sum(Range("e2:e" & cu.Row)) / 3600
  9.   Exit Sub
  10. End If
  11. Next
  12. End Sub
複製代碼

作者: marklos    時間: 2014-12-9 14:19

回復 8# owen06


送上附件
作者: owen06    時間: 2014-12-9 14:24

回復 10# marklos

複製下列代碼貼上去取代舊的就行了
  1. Private Sub CommandButton1_Click()
  2. [g5,h5] = ""
  3. For Each cu In Range("d2:d" & [a65536].End(3).Row)
  4. If cu.Value < [g2] Then
  5.   [g5] = cu.Offset(0, -2).Value
  6.   [h5] = cu.Row
  7.   [g7] = Application.Count(Range("e2:e" & cu.Row)) / 3600
  8.   [h7] = Application.Sum(Range("e2:e" & cu.Row)) / 3600
  9.   Exit Sub
  10. End If
  11. Next
  12. End Sub
複製代碼

作者: marklos    時間: 2014-12-9 16:23

回復 9# owen06


    [attach]19740[/attach]
如果在同一工作表內有兩筆資料需要個別檢察並顯示該如何?
作者: owen06    時間: 2014-12-9 22:30

回復 10# marklos


    將下列代碼複製貼上取代原有的內容
  1. Private Sub CommandButton1_Click()
  2. [g5,h5,g8,h8,o5,p5,g8,h8] = ""
  3. For Each cu In Range("d2:d" & [a65536].End(3).Row)
  4. If cu.Value < [g2] Then
  5.   [g5] = cu.Offset(0, -2).Value
  6.   [h5] = cu.Row
  7.   [g8] = Application.Count(Range("e2:e" & cu.Row)) / 3600
  8.   [h8] = Application.Sum(Range("e2:e" & cu.Row)) / 3600
  9.   GoTo 99
  10. End If
  11. Next
  12. 99  For Each cu2 In Range("m2:m" & [j65536].End(3).Row)
  13. If cu2.Value < [o2] Then
  14.   [o5] = cu2.Offset(0, -2).Value
  15.   [p5] = cu2.Row
  16.   [o8] = Application.Count(Range("p2:p" & cu2.Row)) / 3600
  17.   [p8] = Application.Sum(Range("p2:p" & cu2.Row)) / 3600
  18.   Exit Sub
  19. End If
  20. Next
  21. End Sub
複製代碼

作者: samwang    時間: 2014-12-9 22:37

回復 8# owen06

若以G2 current (A) <0.15為基準, 我是取<0.15但最接近0.15的第一筆資料, 那就是0.149 第45列

你取的值是 1.1494 第30列,其實我也不太了解版大要的是哪一種,

沒關希提供不一樣的答案供參考
作者: samwang    時間: 2014-12-9 22:47

回復 7# marklos


先名稱定義
PW=OFFSET(工作表1!$E$1,,,VALUE(工作表1!$H$5))

公式改為如下
=COUNT(E2:E61)/3600  --> =COUNT(PW)/3600
=SUM(E2:E61)/3600 --> =SUM(PW)/3600
作者: marklos    時間: 2014-12-10 14:15

感謝您的大力幫忙~
作者: marklos    時間: 2014-12-10 14:18

回復 13# owen06


    感謝您的大力幫忙
作者: marklos    時間: 2014-12-10 16:10

回復 13# owen06


    如果[g8]要變更成計算時間差,如下~~VBA要怎麼寫~
=TEXT(g5-B2+(g5<B2),"[ss]"/3600
作者: marklos    時間: 2016-5-4 10:37

回復 9# owen06


    如果符合條件還要加入連續出現5次以上才回傳Sample time & 儲存格列號 , 要怎麼做呢?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)