![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - Excel VBA問題??
(https://www.pcdvd.com.tw/showthread.php?t=895851)
|
|---|
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多各,若要一各一各慢慢判斷可能會死人阿 :jolin: |
你的問題好像不用VBA也可以做出來
不知道你說一各一各慢慢判斷是什麼意思? 用VBA做好像沒有比較快? 或者你少說明什麼 直接把檔案傳上來吧 無聊的人會幫你作 |
引用:
一各一各慢慢判斷是指此若B、C、D若有有改變者,A要打上1 若我資料有5000多行(row),則我要檢查B、C、D 行(column)各別5000多次,而B、C、D內若有任何一數字變成紅色,則我要在相對應的A行(row)打上1 這實在是很花時間,但卻是可以使用VBA作的routine工作,故才想請教各位大大的 |
簡單表格裡面的=if(a=b,1,0)這種作不出來嗎?
因為VBA是比較進階的東西, 用簡單的題目用進階的做 感覺怪怪的 直接把檔案分享好了 |
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已經可以成功了 感恩阿 :like: ~~~~省了好多時間阿 不過想請教若我要判斷的欄位有B至M, P至W 照您的寫法在宣告Dim A與A = "A & i 的地方 要分別寫出B至M, P至W的程式碼(這樣程式碼很冗長) 請問有更簡潔的方法寫出這些嗎?? |
請不要叫我大大,我不是專門寫程式的,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 |
| 所有的時間均為GMT +8。 現在的時間是11:51 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。