返回列表 上一主題 發帖

判斷數值,傳回結果。

判斷數值,傳回結果。

各位先進好,假設我在A欄有一批資料,並在C1儲存格填入一筆資料,當C1儲存格的資料符合A欄任一筆時,就在該列的B欄填入一串公式,否則填入"不符合"三個字,我嘗試撰寫程式後,一直跳出型態不符合的訊息(但是有判斷成功公式的部份),想請教原因何在?謝謝。
以下是附件 Book11.rar (11.47 KB)

回復 1# tku0216
因為C1在A1:A2中找不到時,[match(c1,a1:a2,0)]會回傳錯誤
而Cells的第一個參數為第幾列,所以告訴你傳入的參數型態不符合

TOP

多謝指教~另想請教,若C欄不只一筆時(假設有3筆),想撰寫程式使用迴圈的方式判斷,以下的寫法有甚麼樣的問題?因為目前以下的寫法跳出"yes"視窗,但我確實已經有給符合的資料。

For i = 1 To 3
        If [isnumber(Match(Cells(i, 3), a1:a12, 0))] = True Then
           MsgBox "yes"
        End If
Next

TOP

回復 3# tku0216
試試看
  1. Sub te()
  2. With [C1:C3].Offset(, -1)
  3.     .FormulaR1C1 = "=match(rc[1],c1:c1,0)"
  4.     .SpecialCells(xlCellTypeFormulas, xlNumbers).FormulaR1C1 = "=SUM(C[-1])"
  5.     .SpecialCells(xlCellTypeFormulas, xlErrors) = "不符合"
  6. End With
  7. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# GBKEE


G大,感謝您,
我都沒有想到可以避開迴圈完成VBA,我稍微修改了程式,在match的部分,應該是要反過來查詢,也就是要用A欄查C欄(而非C欄查A欄),這樣一來就可以得到我要的結果,修改後程式如下:
Sub te()
With [C1:C9].Offset(, -1)
    .FormulaR1C1 = "=match(rc[-1],c3:c3,0)"  '此處應反過來查詢!!
    .SpecialCells(xlCellTypeFormulas, xlNumbers) = "=sum(A1:a3)"
    .SpecialCells(xlCellTypeFormulas, xlErrors) = "不符合"
End With
End Sub

這樣一來就會在A欄查到資料的位置,對應到的B欄出現SUM加總,若查不到資料則顯示"不符合"。再次感謝各位的協助。

TOP

回復  tku0216
試試看
GBKEE 發表於 2014-6-1 09:31


G大,不好意思再請教一個延伸問題,若是要填入公式,讓儲存格傳回某工作表中某儲存格的值,應該如下下公式?
例如附件這個例子,在Sheet1的A1儲存格有一組ID,我想讓他在B1儲存格傳回"A123456789"工作表中的A1值(結果為1),直接使用Excel函式為"=INDIRECT(A1&"!A1")"。
但若要使用specialcells,先找出B欄中,包函公式的儲存格,之後在同列所對應的C欄寫入INDIRECT公式,應如何表示"=INDIRECT(A1&"!A1")"這段句子?
Book11.rar (11.74 KB)

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題