2013-10-05 38 views
-1

我需要一個宏/ vba,它可以根據excel中的值自動創建一個選擇雄蕊。示例如下。查詢可以硬編碼爲'SELECT * FROM PRDTBL WHERE',其餘部分應該由宏來處理,它將根據A01,A02和A03中的值進行處理。如果其中一個值爲空白,則將被忽略。任何人都可以給我一個想法/鏈接如何實現它?由於Excel 2010 VBA/MACRO查找字段值自動創建語句

ID  QUERY                 A01  A02  A03  Remark 
1001 SELECT * FROM PRDTBL WHERE A01='ASIA' AND A02='MACHINE' AND A03='G1234' ASIA MACHINE G1234 
1001 SELECT * FROM PRDTBL WHERE A01='EURO' AND A02='MACHINE' AND A03='F101' EURO MACHINE F101  
1004 SELECT * FROM PRDTBL WHERE A01='EURO' AND A03='ASS1'     EURO ASS1  
1003 SELECT * FROM PRDTBL WHERE A01='LATIN' AND A02='FURNITURE'    LATIN FURNITURE  
1005 SELECT * FROM PRDTBL WHERE A01='AUS'         AUS   
+0

'任何人都可以給我一個想法/鏈接如何實現它?呃,記錄一個宏? –

+0

詢問代碼的問題必須表明對正在解決的問題有最少的瞭解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。另請參閱:[堆棧溢出問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

回答

0

對於一些快速的像這樣的,我只想創造一個公式,並使用「&」符號的字符串拼接在一起:

="SELECT * FROM PRDTBL WHERE "&IF(B1="","","A01 = '"&B1&"'")&IF(C1="","",IF(B1<>""," AND ","")&"A02 = '"&C1&"'")&IF(D1="","",IF(OR(B1<>"",C1<>"")," AND ","")& "A03 = '"&D1&"'") 
+0

感謝您的想法,它看起來不錯,但如何寫一個條件,如果以前的領域是空白的?例如,如果字段1是空的,那麼'AND A01 =&A01&'else'A01 =&A01&'。 – user1902849

+0

沒問題。在你的例子中,我假定如果A02也是,那麼A01總是會被填充。我只是做了一些修改,以擺脫不需要的「AND」。 – stobin