返回列表 上一主題 發帖

[發問] 階層邏輯判斷

回復 1# li_hsien
試試看是這樣嗎?
  1. Option Explicit
  2. Sub choose()
  3.     Dim i As Integer, Rng As Range, lv As Integer
  4.     With Worksheets(1)
  5.         lv = 6
  6.         For i = 1 To .Range("G35536").End(xlUp).Row
  7.             .Range("G" & i).Interior.ColorIndex = IIf(.Range("F" & i) = "", 3, lv)
  8.             .Range("h" & i) = ""
  9.             If .Range("F" & i) = "" Then
  10.                 Set Rng = .Range("A" & i).Resize(, 5).Find("*")
  11.                 .Range("h" & i) = "color" & Rng.Column
  12.             End If
  13.         Next
  14.     End With
  15. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-10-28 16:22 編輯

再試試看
  1. Option Explicit
  2. Sub choose()
  3.     Dim flag As Boolean, i As Integer, Rng As Range
  4.     With Worksheets(1)
  5.         For i = 1 To .Range("G35536").End(xlUp).Row  'G欄才真的有資料
  6.             .Range("h" & i) = ""
  7.             If .Range("a" & i) <> "" And .Range("F" & i) = "" Then
  8.                 flag = True
  9.             ElseIf .Range("a" & i) <> "" And .Range("F" & i) = "*" Then
  10.                 flag = False
  11.             End If
  12.             If flag = True And .Range("F" & i) = "" Then
  13.                Set Rng = .Range("A" & i).Resize(, 5).Find("*")
  14.                 .Range("h" & i) = "color" & Rng.Column
  15.             End If
  16.         Next
  17.     End With
  18. End Sub
複製代碼
回復 3# li_hsien
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# li_hsien
再試試看
  1. Option Explicit
  2. Sub choose()
  3.     Dim flag(1 To 5) As Boolean, i As Integer, R As Integer, ii As Integer
  4.     With Worksheets(1)
  5.         .Range("a1", .Range("G35536").End(xlUp)).Interior.ColorIndex = 6
  6.         For i = 1 To .Range("G35536").End(xlUp).Row  'G欄才真的有資料
  7.             R = .Range("A" & i).Resize(, 5).Find("*", .Range("A" & i)).Column
  8.             If .Range("F" & i) = "*" And R = 1 Then Erase flag
  9.             If .Range("F" & i) = "" Then
  10.                 flag(R) = True
  11.             ElseIf .Range("F" & i) = "*" Then
  12.                 flag(R) = False
  13.             End If
  14.             For ii = 1 To R
  15.                 If flag(ii) = False Then GoTo 10:
  16.             Next
  17.             .Range("G" & i).Interior.ColorIndex = 3
  18. 10:
  19.         Next
  20.     End With
  21. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 14# li_hsien
Find("") ->尋找空白的儲存格
Find("*") ->尋找任何有資料的儲存格
.Find("*", .Range("A" & i))   沒錯 : 是找有有資料的儲存格位置,從A欄開始找吧
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 16# li_hsien
.Range("A" & i).Resize(, 5).Find("*", .Range("A" & i))
Resize將指定擴充為(幾列,幾欄)的範圍 -> Ai:Ei 的範圍.Find("*", .Range("A" & i))->Find("*" : 尋找有資料的儲存格.
F欄的* 在這裡判斷出來 -> ElseIf .Range("F" & i) = "*" Then
  1. Dim flag(1 To 5) As Boolean-> 初始化 1 - 5 為 False
  2. If .Range("F" & i) = "*" And R = 1 Then Erase flag
  3. '*************************
  4. Erase 陳述式
  5. 重新初始化固定大小陣列的元素,並釋放動態陣列的儲存空間。-> 1 - 5 為 False
  6. '*******************************************
  7.   
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題