標題:
[發問]
在單一欄位中計算有無負值
[打印本頁]
作者:
Changbanana
時間:
2016-8-22 15:03
標題:
在單一欄位中計算有無負值
在A欄中計算欄位有無負值
如工作表1
[attach]25004[/attach]
寫的程式碼如下:
Sub CheckNegativeNumber()
Dim ng As Integer
Worksheets("工作表1").Activate
Range("A500").FormulaR1C1 = "=COUNTIF(R[-499]C:R[-1]C,""<0"")"
ng = Range("A500").Value
MsgBox "負數共有 :" & ng & "筆"
End Sub
複製代碼
現在的問題是A欄的資料目前沒有很多
所以先設定在A500這儲存格下公式
但未來如果超過500筆就必須在修改程式碼
有什麼方法可以不要指定儲存格
直接搜尋目前的欄位有無負值,後用MsgBox顯示出負數有幾筆~~
麻煩各位了~~Thank you :)
作者:
stillfish00
時間:
2016-8-22 16:00
回復
1#
Changbanana
ng = Evaluate("COUNTIF(A:A,""<0"")")
作者:
Changbanana
時間:
2016-8-22 16:06
回復
2#
stillfish00
謝謝你~ 成功解決,不用在特定儲存格下公式了
Evaluate 的用法是?
可否解說一下~
作者:
stillfish00
時間:
2016-8-22 16:27
回復
3#
Changbanana
這邊Evaluate單純是計算公式後傳回結果,參數必須是字串
也可以寫成中括號,如
ng = [COUNTIF(A:A,"<0")]
作者:
Changbanana
時間:
2016-8-22 16:40
回復
4#
stillfish00
謝謝您的詳細解說~
學到了一課:)
作者:
Changbanana
時間:
2016-10-17 15:16
回復
2#
stillfish00
請教您若在A欄編號有1234&-1234
如圖:
[attach]25567[/attach]
編號去掉前面有" - "不計算
只計算正常的1234.1555.1556.1777.1899.1890.9999.9997這些編號即可
-1234.-1890忽略不看
以下是修改的程式碼但結果不是正確的
Sub CNN()
Dim ng As Integer
Dim rg As Range
Dim row As Long
Set rg = Worksheets("工作表1").Range("A1")
row = 2
Do While LEFT(rg(row, 1),1) <> "-"
ng = Evaluate("COUNTIF(B:B,""<0"")")
row = row + 1
Loop
If ng <> 0 Then
MsgBox "有 : " & ng & " 筆" & "負數!!! ", vbExclamation, " 警 示 "
Else
MsgBox "沒有負的", vbOKOnly, " "
End If
End Sub
複製代碼
結果會跑出三筆負數
但正確結果是只有一筆
這樣程式碼該怎麼修改~
作者:
GBKEE
時間:
2016-10-18 06:26
回復
6#
Changbanana
試試看
Option Explicit
Sub CNN()
Dim ng As Integer
Dim rg As Range
Dim row As Long
Set rg = Worksheets("工作表1").Range("A1")
row = 2
Do While rg(row) <> ""
If rg(row) > 0 And rg(row, 2) < 0 Then ng = ng + 1
row = row + 1
Loop
If ng <> 0 Then
MsgBox "有 : " & ng & " 筆" & "負數!!! ", vbExclamation, " 警 示 "
Else
MsgBox "沒有負的", vbOKOnly, " "
End If
End Sub
複製代碼
作者:
Changbanana
時間:
2016-10-18 11:00
回復
7#
GBKEE
謝謝您提供的程式碼~結果是成功的唷
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)