close

IF這東西 真的很好用
用途在於判斷這的東西是否成立

不管是在儲存格 或者在VBA
但是函數的儲存格 目前判斷好像只能7還是8(有點忘記)

先來說說在函數中
通常用在哪個時候
我自己是用在考績評量的時候 所要發的年終獎金

例如:優等是可以領多少 甲等領多少....之類的
如果整個公司大概有20-30人
有時候沒注意到 真的會不小心把獎金欄位看錯

在儲存格函數公式可以
=IF(A2>=90,"優",IF(A2>=80,"甲",IF(A2>=70,"乙",IF(A2>=60,"丙","丁"))))
這樣  90(含)分以上顯示優
未滿90到80(含)分以上顯示甲
未滿80到70(含)分以上顯示乙
未滿70到60(含)分以上顯示丙
未滿60以下顯示丁

以上的優甲乙丙都可以改成數字,一樣要用" "
有一次發現我同事,一個一個判斷,在KEY正確的
就覺得好浪費時間呀....
10筆資料我就懶得KEY...何況破100,真佩服她...


好啦  要來講講困難的地方了

VBA中的IF這個東西

IF...then....elas

IF....then.....elasif.....elas

我用在....資料找查在讓他寫入在相對位置上

因為每個人習慣不一樣,排列的方式可能按照他們的工作,而有不同的排列方式...
因為每個人看的方式不一樣,又要依照他們的習慣,要改版...我沒有那麼多時間做那麼多事情
(所以後來用了VBA後,我盡量用VBA原本程式去寫)
所以我會用一個工作表,用一個按鍵變出,給不同人看的工作表
(其實可以用=工作表!'....之類的東西...但是因為某些原因這個東西有可能用A工作表帶入 也有可能用B工作表帶入) 

內容大同小異(因為有刪減增加欄位或者只有改變排序方式)
所以我才生出這個東西   用IF來搜尋資料 顯示對應資料


ntl=WorksheetFunction.CountA(Columns(1))                      '定義ntl的數字  等於A欄位沒有空白格數量
For x = 1 To ntl
        For y = 1 To 100
                If Sheets("甲工作表").Cells(2 + x, 1) = "" Then       '甲工作表  A欄位是否空白 
                    Sheets("甲工作表").Cells(2 + x, 8) = ""                ' 如果甲工作表 A欄位是空白 那H欄位就空白               
                End If 
                            If Sheets("甲工作表").Cells(2 + x, 8) = ""  then                                                                 '甲工作表  H欄位是否空白 
                                          If Sheets("甲工作表").Cells(2 + x, 1) = Sheets("乙工作表").Cells(y, 1) Then         ' 如果甲工作表 A欄位   跟   乙工作表   A欄位是否一樣
                                          Sheets("甲工作表").Cells(2 + x, 8) = Sheets("乙工作表").Cells(y, 12)                   ' '如果甲工作表 A欄位   跟   乙工作表   A欄位一樣  那甲工作表 H欄位是空白 等於  乙工作表 L欄位
                                          End If 
                            End If                                            
            Next y
        Next x


以上其實關鍵字我都改掉了 且我盡量用簡易的方式說明  XD

其實跟儲存格函數IF概念差不多

函數                  IF(條件,成立,不成立)
那VBA是           IF 條件  then  成立    else 不成立

那把IF內在包一個IF   
IF      A      then                                  A條件成立時
         IF        B               then              當A條件成立時  判斷是否有符合B條線
                    C                                    在A條件成立時  也符合B條線時 執行C
         Else     D                                   在A條件成立時  但不符合B條線時 執行D   
         End IF                                                           
Else         E                                        若不符合A條件   執行E      
End IF

若按照上面VBA的例子  我只有寫A   B    C

當初在寫這個的時候 我寫得很複雜
而且當初被一些東西卡住    但今天再把東西寫清楚
發現我當初怎麼會寫不出來呢?(也忘了當初卡在哪裡  XD)
當初我寫成下面的樣子

IF      A      then                                  A條件成立時
         B                                              執行B條件                         
         ElseIF      C    then                在A條件不成立時  確認是否有符合C條件
                        D                           若不符合A條件  但符合C條件時  執行D
         Else         E                            若不符合A條件 也不符合C條件時    執行E

         End IF
End IF

我寫了  A    C   D

真的很亂...XD

昨天在寫另一篇文章 才想說也把之前有特別研究的部分 都在抓出來寫一寫
不然忘了 要抓回來 還要一段時間   (昨天忽然一看 也是看不懂我當初在寫那些鳥  而且程式還跑得出來 真厲害)
其實公式越簡單越好...
不要太複雜 不然之後要改
會一個頭兩個大

 

之後有空會在寫寫我之前其他的VBA  如果以後要用 還可以有參考文件看看
我沒有學過相關程式設計,我只有學過WORD和EXCLE基礎
VBA這東西完全沒有碰過
所以寫得不好 請原諒啦

 

迷之音:打完這篇 發現SUMIF的VBA  我好像也可以寫出來了耶....

參考資料:
https://blog.gtwang.org/programming/excel-vba-programming-if-then-else-condition/

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 future0613 的頭像
    future0613

    心の日記

    future0613 發表在 痞客邦 留言(0) 人氣()