Board logo

標題: 判斷數值,傳回結果。 [打印本頁]

作者: tku0216    時間: 2014-5-28 20:23     標題: 判斷數值,傳回結果。

各位先進好,假設我在A欄有一批資料,並在C1儲存格填入一筆資料,當C1儲存格的資料符合A欄任一筆時,就在該列的B欄填入一串公式,否則填入"不符合"三個字,我嘗試撰寫程式後,一直跳出型態不符合的訊息(但是有判斷成功公式的部份),想請教原因何在?謝謝。
以下是附件[attach]18397[/attach]
作者: stillfish00    時間: 2014-5-29 10:09

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

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

For i = 1 To 3
        If [isnumber(Match(Cells(i, 3), a1:a12, 0))] = True Then
           MsgBox "yes"
        End If
Next
作者: GBKEE    時間: 2014-6-1 09:31

回復 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
複製代碼

作者: tku0216    時間: 2014-6-1 23:15

回復 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加總,若查不到資料則顯示"不符合"。再次感謝各位的協助。
作者: tku0216    時間: 2014-6-29 19:41

回復  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")"這段句子?
[attach]18591[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)