2013-10-05 40 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