2013-07-30 76 views
0

我有一个Excel工作表中的数字列表。对我来说,唯一有趣的是在B列Autohotkey - 从Excel中将数据从Excel中检索到列表框

我用下面的代码来获取从表中的数据:

xlDown := -4121 

fileselectfile, path 


oExcel := ComObjCreate("Excel.Application") ;create a handle to a new excel application 
oExcel.Visible := True ; by default excel sheets are invisible use true to see excel 
oWorkBook := oExcel.Workbooks.open(path) 

End := oExcel.Range("B1").End(xlDown).row 
;Range_B := oExcel.Range("B1:B" . End) <--- would be good, but stops at every empty lines 
Range_B := oExcel.Range("B1:B100") <--- I'm using this as my list is never longer than 100 entries 

for cell in Range_B 

    CONList .= cell.text "|" 

GuiControl,, CONListVar, %CONList% 

return 

有3种类型在此列的数据,和我只对一个感兴趣,所以我想过滤掉其余的。数据类型:

  1. 7位号码 - 我需要这种格式的这些

  2. 日期:DD.M.YYYY - 我不需要这些

  3. 随机空白单元格 - 这不是我需要这些

有没有办法修改下面的代码或操纵'CONList'变量来过滤只保留7位数字?我无法修改Excel工作表,所以我需要处理输出。

在此先感谢!

+0

怎么样'REGEXMATCH(cell.text, “^ \ d {7} $”)'? – MCL

+0

谢谢!我可以在哪里插入这段代码? – Ismo

+0

在循环中:'if(RegExMatch(cell.text,“^ \ d {7} $”))CONList。= ...' – MCL

回答

0

测试在每次循环迭代与RegExMatch()细胞:

for cell in Range_B 
{ 
    if(RegExMatch(cell.text, "^\d{7}$")) { 
     CONList .= cell.text "|" 
    } 
}