Excel縮排層級處理

繁夢溪發表於2020-11-28

需求:

將Excel檔案內容處理為帶層級的格式

步驟:

1、提取單元格文字縮排個數

Sub 巨集()
Dim a As Integer
For a = 2 To 6273
ActiveSheet.Cells(a, 2) = ActiveSheet.Cells(a, 1).IndentLevel
Next a
End Sub

2、將縮排進行統計,進行疊加

將縮排進行統計0-9個等級

當縮排為0時,對臨時變數進行初始化賦值

依次按照等級進行迴圈,下一個等級等於上一個等級的內容拼接

#i 為行號或索引值,x為最後一行或最大索引
for i in range(x):
    tmp_num=data[i:i+1]['縮排'].values
    if tmp_num[0]-2==0:
        y0=data[i:i+1]['適應症'].values[0]
        y=y0
    elif tmp_num[0]-2==1:
        y1=y0+'>'+data[i:i+1]['適應症'].values[0]
        y=y1
    elif tmp_num[0]-2==2:
        y2=y1+'>'+data[i:i+1]['適應症'].values[0]
        y=y2
    ……
        
    print(y)

3、層級處理程式碼(Python)

import pandas as pd

#讀取Excel資料
data=pd.read_excel('./data/適應症.xlsx',sheet_name='適應症層級',header=0)

data['層級']=''

#層級處理
for i in range(len(data)):
    tmp_num=data[i:i+1]['縮排'].values
    if tmp_num[0]-2==0:
        y0=data[i:i+1]['適應症'].values[0]
        y=y0
    elif tmp_num[0]-2==1:
        y1=y0+'>'+data[i:i+1]['適應症'].values[0]
        y=y1
    elif tmp_num[0]-2==2:
        y2=y1+'>'+data[i:i+1]['適應症'].values[0]
        y=y2
    elif tmp_num[0]-2==3:
        y3=y2+'>'+data[i:i+1]['適應症'].values[0]
        y=y3
    elif tmp_num[0]-2==4:
        y4=y3+'>'+data[i:i+1]['適應症'].values[0]
        y=y4
    elif tmp_num[0]-2==5:
        y5=y4+'>'+data[i:i+1]['適應症'].values[0]
        y=y5
    elif tmp_num[0]-2==6:
        y6=y5+'>'+data[i:i+1]['適應症'].values[0]
        y=y6
    elif tmp_num[0]-2==7:
        y7=y6+'>'+data[i:i+1]['適應症'].values[0]
        y=y7
    elif tmp_num[0]-2==8:
        y8=y7+'>'+data[i:i+1]['適應症'].values[0]
        y=y8
    elif tmp_num[0]-2==9:
        y9=y8+'>'+data[i:i+1]['適應症'].values[0]
        y=y9
    elif tmp_num[0]-2==10:
        y10=y9+'>'+data[i:i+1]['適應症'].values[0]
        y=y10
        
    print(y)
    data.at[i, '層級']=y

#儲存資料
data.to_excel('./data/適應症處理.xlsx')

4、結果預覽

5、處理前後對比

 

相關文章