PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

回應
 
主題工具
onizuka-t
Major Member
 
onizuka-t的大頭照
 

加入日期: Jan 2002
您的住址: 台北~台中
文章: 256
Excel VBA問題??

各位大大好,

小弟有各問題想請教各位

如果column B、C、D分別代表時間、地點、人 (此時字型色彩為黑色)
而row則是分別代表每個事件
舉例來說B1為10/24、C1為小巨蛋、D1為我與弟
B2為10/25、C2為體育館、D2為我與同學
其餘類推......

若現在假若任何一個事件的 B、C、D任一數值改變,我會以紅字表示
以上動作都是使用人工

----------------VBA要做的事情-----------------
但現在問題為我希望任何一事件若有改變
舉例來說即B1、C1、D1內若有一格為紅色,則在A1顯示數值"1",若皆無改變A1則強制輸入空白值
其餘類推......
----------------VBA要做的事情-----------------

請問如何使用excel VBA,寫出來呢??

PS: 小弟上述例子為簡化表示,事實上的事件大約有5000多各,若要一各一各慢慢判斷可能會死人阿
     
      
__________________
有多久沒有和老朋友見面了?
真誠的關心
會被永遠記得
見了面也不須太多話
只要用心地說出──好久不見。

此文章於 2010-05-29 06:21 PM 被 onizuka-t 編輯.
舊 2010-05-29, 06:17 PM #1
回應時引用此文章
onizuka-t離線中  
airitter
Master Member
 
airitter的大頭照
 

加入日期: Sep 2003
文章: 2,102
你的問題好像不用VBA也可以做出來
不知道你說一各一各慢慢判斷是什麼意思?

用VBA做好像沒有比較快?
或者你少說明什麼

直接把檔案傳上來吧

無聊的人會幫你作
 
__________________
[ExtremeTech]VGAMaster
舊 2010-05-29, 06:48 PM #2
回應時引用此文章
airitter離線中  
onizuka-t
Major Member
 
onizuka-t的大頭照
 

加入日期: Jan 2002
您的住址: 台北~台中
文章: 256
引用:
作者airitter
你的問題好像不用VBA也可以做出來
不知道你說一各一各慢慢判斷是什麼意思?

用VBA做好像沒有比較快?
或者你少說明什麼

直接把檔案傳上來吧

無聊的人會幫你作



一各一各慢慢判斷是指此若B、C、D若有有改變者,A要打上1
若我資料有5000多行(row),則我要檢查B、C、D 行(column)各別5000多次,而B、C、D內若有任何一數字變成紅色,則我要在相對應的A行(row)打上1

這實在是很花時間,但卻是可以使用VBA作的routine工作,故才想請教各位大大的
__________________
有多久沒有和老朋友見面了?
真誠的關心
會被永遠記得
見了面也不須太多話
只要用心地說出──好久不見。
舊 2010-05-29, 07:21 PM #3
回應時引用此文章
onizuka-t離線中  
airitter
Master Member
 
airitter的大頭照
 

加入日期: Sep 2003
文章: 2,102
簡單表格裡面的=if(a=b,1,0)這種作不出來嗎?

因為VBA是比較進階的東西, 用簡單的題目用進階的做 感覺怪怪的

直接把檔案分享好了
__________________
[ExtremeTech]VGAMaster

此文章於 2010-05-29 07:38 PM 被 airitter 編輯.
舊 2010-05-29, 07:28 PM #4
回應時引用此文章
airitter離線中  
lcc22
New Member
 

加入日期: Dec 2001
文章: 5
Sub test()
Dim A As String, B As String, C As String, D As String
Dim i As Integer

For i = 1 To 10 '這裡只假設有10筆資料,且資料存在於同一worksheet
A = "A" & i
B = "B" & i
C = "C" & i
D = "D" & i

If Range(B).Font.ColorIndex = 3 Then
Range(A).Value = 1
ElseIf Range(C).Font.ColorIndex = 3 Then
Range(A).Value = 1
ElseIf Range(D).Font.ColorIndex = 3 Then
Range(A).Value = 1
Else
Range(A).Value = ""
End If
Next i

End Sub
舊 2010-05-29, 07:52 PM #5
回應時引用此文章
lcc22離線中  
onizuka-t
Major Member
 
onizuka-t的大頭照
 

加入日期: Jan 2002
您的住址: 台北~台中
文章: 256
引用:
作者lcc22
Sub test()
Dim A As String, B As String, C As String, D As String
Dim i As Integer

For i = 1 To 10 '這裡只假設有10筆資料,且資料存在於同一worksheet
A = "A" & i
B = "B" & i
C = "C" & i
D = "D" & i

If Range(B).Font.ColorIndex = 3 Then
Range(A).Value = 1
ElseIf Range(C).Font.ColorIndex = 3 Then
Range(A).Value = 1
ElseIf Range(D).Font.ColorIndex = 3 Then
Range(A).Value = 1
Else
Range(A).Value = ""
End If
Next i

End Sub



謝謝大大,照您的寫的VBA已經可以成功了
感恩阿 ~~~~省了好多時間阿
不過想請教若我要判斷的欄位有B至M, P至W
照您的寫法在宣告Dim A與A = "A & i 的地方
要分別寫出B至M, P至W的程式碼(這樣程式碼很冗長)
請問有更簡潔的方法寫出這些嗎??
__________________
有多久沒有和老朋友見面了?
真誠的關心
會被永遠記得
見了面也不須太多話
只要用心地說出──好久不見。
舊 2010-05-29, 08:43 PM #6
回應時引用此文章
onizuka-t離線中  
lcc22
New Member
 

加入日期: Dec 2001
文章: 5
請不要叫我大大,我不是專門寫程式的,VBA的變數宣告有些怪,沒法一次宣告同樣的性質

Sub test()
Dim i As Integer, j As Integer

For i = 1 To 10 '假設資料10筆,並存於同一worksheet
For j = 2 To 23
If j <> 14 And j <> 15 Then
If ActiveSheet.Cells(i, j).Font.ColorIndex = 3 Then
ActiveSheet.Cells(i, 1).Value = 1
Exit For
Else
ActiveSheet.Cells(i, 1).Value = ""
End If
End If
Next j
Next i

End Sub
舊 2010-05-29, 11:01 PM #7
回應時引用此文章
lcc22離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:20 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。