標題:
[發問]
判斷符合資料儲存格數及複製資料問題
[打印本頁]
作者:
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
Sub Ex()
Dim Rng As Range
Set Rng = Range("C2:C26") 'Rng.Rows.Count 有25個儲存格數
' Application.CountIf 使用工作表函數
If Application.CountIf(Rng, "<=0.95") < Rng.Rows.Count Then
Range("A1:C26").Copy Range("I1")
ElseIf Application.CountIf(Rng, "<=0.90") < Rng.Rows.Count Then
Range("A1:C26").Copy Range("I1")
End If
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
Sub Ex()
Dim Rng As Range, i As Integer, Msg As Boolean
i = 25 ' 儲存格數,是否低於25
With ActiveSheet
.AutoFilterMode = False '取消自動篩選
Set Rng = .Range("A1", .Range("C" & Rows.Count).End(xlUp))
If Application.CountIf(Rng.Columns(3), "<=0.95") < i Then
Rng.AutoFilter 3, "<=0.95" '自動篩選 選擇第3欄, 條件"<=0.95"
Msg = True
ElseIf Application.CountIf(Rng.Columns(3), "<=0.90") < i Then
Rng.AutoFilter 3, "<=0.90"
Msg = True
End If
Set Rng = Rng.SpecialCells(xlCellTypeVisible)
If Msg = True Then
.AutoFilterMode = False
.Range("I:K").Clear
Rng.Copy .Range("i1")
With .Cells(Rows.Count, "I").End(xlUp)
.Offset(1) = "不符合"
.Offset(1, 1) = Application.Sum(ActiveSheet.Range(.Offset(1, 1), .Cells.End(xlUp).Offset(, 1)))
.Offset(1, 2) = 1
End With
End If
End With
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欄的加總
Sub Ex()
Dim Rng As Range, i As Integer, Msg As Boolean, S As Double
i = 25 ' 儲存格數,是否低於25
With ActiveSheet
.AutoFilterMode = False '取消自動篩選
Set Rng = .Range("A1", .Range("C" & Rows.Count).End(xlUp))
S = Application.Sum(Rng.Columns(2)) 'B欄的加總
If Application.CountIf(Rng.Columns(3), "<=0.95") < i Then
Rng.AutoFilter 3, "<=0.95" '自動篩選 選擇第3欄, 條件"<=0.95"
Msg = True
ElseIf Application.CountIf(Rng.Columns(3), "<=0.90") < i Then
Rng.AutoFilter 3, "<=0.90"
Msg = True
End If
Set Rng = Rng.SpecialCells(xlCellTypeVisible)
If Msg = True Then
.AutoFilterMode = False
.Range("I:K").Clear
Rng.Copy .Range("i1")
With .Cells(Rows.Count, "I").End(xlUp)
.Offset(1) = "不符合"
.Offset(1, 1) = S - Application.Sum(Range("j:j")) 'B欄的加總-J欄的加總
.Offset(1, 2) = 1
End With
End If
End With
End Sub
複製代碼
作者:
day741025
時間:
2011-7-17 22:38
回復
8#
GBKEE
語法的應用大致上懂了
又多學到了一些東西(例:篩選的應用)
謝謝^^
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)