Board logo

標題: [發問] 判斷符合資料儲存格數及複製資料問題 [打印本頁]

作者: day741025    時間: 2011-7-16 07:28     標題: 判斷符合資料儲存格數及複製資料問題

本帖最後由 day741025 於 2011-7-17 20:44 編輯

請問如果我想要先判斷C欄位<=0.95的儲存格數,是否低於25,
若上述條件成立,則將「符合條件」的儲存格之A、B、C欄內的資料,複製到I、J、K欄位,
不符合條件」的儲存格之C欄位加總,再複製到I、J、K欄位(註:I欄位顯示"不符合"、J欄位為不符合條件之儲存格加總、K欄位顯示"1")

若上述條件不成立,則接續判斷C欄位<=0.90的儲存格數是否低於25,
若上述條件成立,則將「符合條件」的儲存格之A、B、C欄內的資料,複製到I、J、K欄位,
不符合條件」的儲存格之C欄位加總,再複製到I、J、K欄位(註:I欄位顯示"不符合"、J欄位為不符合條件之儲存格加總、K欄位顯示"1")

註:sheet有呈現獲得的結果。

VBA要怎麼實現?感謝各位^^"

[attach]7032[/attach]
作者: GBKEE    時間: 2011-7-16 07:59

回復 1# day741025
  1. Sub Ex()
  2. Dim Rng  As Range
  3.     Set Rng = Range("C2:C26")  'Rng.Rows.Count 有25個儲存格數
  4.    ' Application.CountIf  使用工作表函數
  5.     If Application.CountIf(Rng, "<=0.95") < Rng.Rows.Count Then
  6.         Range("A1:C26").Copy Range("I1")
  7.     ElseIf Application.CountIf(Rng, "<=0.90") < Rng.Rows.Count Then
  8.         Range("A1:C26").Copy Range("I1")
  9.     End If
  10. End Sub
複製代碼

作者: day741025    時間: 2011-7-16 08:20

本帖最後由 day741025 於 2011-7-16 08:24 編輯

回復 2# GBKEE


   
感謝板主的回饋,
不過板主回饋的程式,可能是在小弟更新之前的需求,

小弟目前遇到的問題為在判斷條件成立後,先把符合條件之所有欄位複製到I、J、K欄位,
另外把不符合條件之C欄位加總,然後再複製到K欄位,並於I、J欄位顯示"不符合"

目前有想到的方法是,條件成立後,把符合條件的C欄位儲存格選取,然後再往左邊選取至A欄位(類似鍵盤SHIFT + ←選取儲存格的方法),之後進行拷貝至目的儲存格!
不符合條件儲存格C欄位進行加總,之後進行拷貝至目的儲存格,並於I、J欄位顯示"不符合"

註:儲存格範圍資料是變動的,故程式碼須判斷至最後一個有資料的儲存格。
作者: GBKEE    時間: 2011-7-16 13:58

回復 3# day741025

請重新上傳範例的檔案
作者: day741025    時間: 2011-7-17 08:41

回復 4# GBKEE


已重新上傳檔案,以及新增sheet顯示最終的結果!
謝謝^^
作者: GBKEE    時間: 2011-7-17 09:36

本帖最後由 GBKEE 於 2011-7-17 21:35 編輯

回復 5# day741025
  1. Sub Ex()
  2. Dim Rng  As Range, i As Integer, Msg As Boolean
  3.     i = 25   ' 儲存格數,是否低於25
  4.     With ActiveSheet
  5.          .AutoFilterMode = False         '取消自動篩選
  6.         Set Rng = .Range("A1", .Range("C" & Rows.Count).End(xlUp))
  7.         If Application.CountIf(Rng.Columns(3), "<=0.95") < i Then
  8.             Rng.AutoFilter 3, "<=0.95"   '自動篩選  選擇第3欄, 條件"<=0.95"
  9.             Msg = True
  10.         ElseIf Application.CountIf(Rng.Columns(3), "<=0.90") < i Then
  11.             Rng.AutoFilter 3, "<=0.90"
  12.             Msg = True
  13.         End If
  14.         Set Rng = Rng.SpecialCells(xlCellTypeVisible)
  15.         If Msg = True Then
  16.             .AutoFilterMode = False
  17.             .Range("I:K").Clear
  18.             Rng.Copy .Range("i1")
  19.             With .Cells(Rows.Count, "I").End(xlUp)
  20.                 .Offset(1) = "不符合"
  21.                 .Offset(1, 1) = Application.Sum(ActiveSheet.Range(.Offset(1, 1), .Cells.End(xlUp).Offset(, 1)))
  22.                 .Offset(1, 2) = 1
  23.             End With
  24.         End If
  25.     End With
  26. End Sub
複製代碼

作者: day741025    時間: 2011-7-17 20:40

程式碼確認可以使用,但J欄位最後一格,我要加總B欄位不符合條件的儲存格,不是加總J欄位的儲存格!
.Offset(1, 1) = Application.Sum(ActiveSheet.Range(.Offset(1, 1), .Cells.End(xlUp).Offset(, 1)))

謝謝~
作者: GBKEE    時間: 2011-7-17 21:34

回復 7# day741025
B欄的加總-J欄的加總
  1. Sub Ex()
  2. Dim Rng  As Range, i As Integer, Msg As Boolean, S As Double
  3.     i = 25   ' 儲存格數,是否低於25
  4.     With ActiveSheet
  5.          .AutoFilterMode = False         '取消自動篩選
  6.         Set Rng = .Range("A1", .Range("C" & Rows.Count).End(xlUp))
  7.         S = Application.Sum(Rng.Columns(2))      'B欄的加總
  8.         If Application.CountIf(Rng.Columns(3), "<=0.95") < i Then
  9.             Rng.AutoFilter 3, "<=0.95"   '自動篩選  選擇第3欄, 條件"<=0.95"
  10.             Msg = True
  11.         ElseIf Application.CountIf(Rng.Columns(3), "<=0.90") < i Then
  12.             Rng.AutoFilter 3, "<=0.90"
  13.             Msg = True
  14.         End If
  15.         Set Rng = Rng.SpecialCells(xlCellTypeVisible)
  16.         If Msg = True Then
  17.             .AutoFilterMode = False
  18.             .Range("I:K").Clear
  19.             Rng.Copy .Range("i1")
  20.             With .Cells(Rows.Count, "I").End(xlUp)
  21.                 .Offset(1) = "不符合"
  22.                 .Offset(1, 1) = S - Application.Sum(Range("j:j"))  'B欄的加總-J欄的加總
  23.                 .Offset(1, 2) = 1
  24.             End With
  25.         End If
  26.     End With
  27. End Sub
複製代碼

作者: day741025    時間: 2011-7-17 22:38

回復 8# GBKEE


語法的應用大致上懂了
又多學到了一些東西(例:篩選的應用)
謝謝^^




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