2016年6月25日 星期六

Coordinate Table to Map Converter

在產品的測試上,通常將數據轉成圖表或圖形會更有益於分析。尤其在晶圓製造最容易遇到均勻性問題(uniformity),這時候將raw data轉成wafer上的分佈,可以很快分析出異常元件出現在wafer上的某一區,進而知道和哪一道製程或機台有關。

最近看到python有xlwings這lib,好像可以和VBA連結,但還沒研究很透徹,對我來說好處是執行時excel不用關閉,而且指令很直覺。

*可用coordinate_from_string & column_index_from_string將excel座標轉成數字

raw data format:



















因為不喜歡畫面上太多迴圈去讀值, 做法是先個別抓出value, x, y座標的list, 再zip成類似子陣列, 讀值概念如下:
val = xw.Range('A2').vertical.value
Xaxis = xw.Range('B2').vertical.value
Yaxis = xw.Range('C2').vertical.value

zipVal_list = list(zip(val, Xaxis, Yaxis))
for zipVal in zipVal_list:
    print(zipVal)













全程式碼:
from openpyxl.utils import _get_column_letter
from openpyxl.utils import coordinate_from_string, column_index_from_string
import xlwings as xw

xw.Workbook(r'C:\xlwings.xlsx')

val = xw.Range('A2').vertical.value
Xaxis = xw.Range('B2').vertical.value
Yaxis = xw.Range('C2').vertical.value

zipVal_list = list(zip(val, Xaxis, Yaxis))

for zipVal in zipVal_list:
    
    #start point
    zero = coordinate_from_string('G4') # G4 as start point
    zero_x = column_index_from_string(zero[0])-1
    zero_y = zero[1]-1
    
    #_get_column_letter converts int to letter only but not in float
    axis = str(_get_column_letter(int(zipVal[1]) + zero_x) + str(int(zipVal[2]) + zero_y))
    xw.Range(axis).value = zipVal[0]


map result: (可隨raw data的x,y設定轉成任何圖形,ex:圓形分布)

沒有留言:

張貼留言