蒼南網(wǎng)站設(shè)計公司百度非企渠道開戶
- 題設(shè):Excel表格中,計算如下圖所示不同顏色(藍(lán)、黃、桔)單元格值:各顏色填涂的單元格值的總和
- 條件:
- Excle表格中
- 分色標(biāo)記,單元格有值
- 開始列(當(dāng)前為D),開始行(當(dāng)前為6)隨機(jī)設(shè)置
- 下三角直角邊長(當(dāng)前為10個單元格)隨機(jī)設(shè)置,與桔色單行長度相同(當(dāng)前為10個單元格)
- 計算:1)藍(lán)色單元格中值總和、藍(lán)色單元格中值總和、藍(lán)色單元格中值總和;2)各色單元格的數(shù)量
1. 方法1:Excel選中對應(yīng)顏色的單元格,自動生成格子數(shù)和單元格值總和
2. 方法2:Excel格式查找(前題,先標(biāo)顏色)
? ? ? ?藍(lán):660? ?;黃:110? ? ?;桔:660
3. 方法3:宏(VBA編程,沒做,也許找時間試)
4. 方法4:Numpy(構(gòu)建列表,然后分別計算,沒做,也許找時間試)? ??
5. 方法5:python數(shù)格子(也許是最笨的方法),生成Excel的sum函數(shù),計數(shù)、求和 (忽略代碼冗余)
###################################
# 2023.12
# Sum as request
#################################### 構(gòu)建列組合
la = ['','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
lb = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']sc = str.upper('D') # 開始列,自動轉(zhuǎn)成大寫
##ec = 'AI' # 結(jié)束列
sr = 6 # 開始行
er = 37 # 結(jié)束行
bc = 10 # 下三角黃色邊長
lw = 26 # English字母表長度li = 0 # 開始列數(shù)值
if len(sc) == 1:li = lb.index(sc)
else:li = la.index(sc[0]) * lw + lb.index(sc[1])
lai = li//26
lbi = li%26###################### up,上三角藍(lán)色
##sum_up = 0
up_str = '=sum(' # excle sum function string
up_cn = 0sr_up = sr
er_up = er - bc # 上三角下邊界
sc_up = sc
ec_up = li + (er - bc - sr)tlai = la[ec_up//26]
tlbi = lb[ec_up%26]
tc = er - bc - sr + 1 # 上三角邊長for r in range(tc):ti = li + tc - 1 - rtlai = la[ti//26]tlbi = lb[ti%26]up_str = up_str + sc + str(sr_up + r) + ':' + tlai + tlbi + str(sr_up + r) + ','up_cn = up_cn + tc - rup_str = up_str + ")"
print("Up: ", up_str)
print("Up Count: ", up_cn) ###################### mid,中間四邊形桔色
##sum_mid = 0
mid_str = '=sum(' # excle sum function string
mid_cn = 0sr_mid = sr
er_mid = er - bc
sc_mid = li + 1
ec_mid = li + (er - bc - sr) + bctc = er - bc - sr + 1 # 桔色高度for r in range(tc):tsc = sc_mid + r # 開始列tec = tsc + bc - 1 # 結(jié)束列tr = er_mid - r # 行號 mid_str = mid_str + la[tsc//lw] + lb[tsc%lw] + str(tr) + ':' + la[tec//lw] + lb[tec%lw] + str(tr) + ','mid_cn = mid_cn + bcmid_str = mid_str + ")"
print("Mid: ", mid_str)
print("Mid Count: ", mid_cn) ###################### down,下三角黃色
##sum_down = 0
down_str = '=sum(' # excle sum function string
down_cn = 0 # down cell countsr_down = er - bc + 1 # 下三角開始行
##sc_down = sc # 下三角開始列
##ec_down = li + bc - 1 # 下三角結(jié)束列tlai = lai
tlbi = lbifor r in range(bc):ti = li + bc - 1 - rtlai = la[ti//26]tlbi = lb[ti%26]down_str = down_str + sc + str(sr_down + r) + ':' + tlai + tlbi + str(sr_down + r) + ','down_cn = down_cn + bc - rdown_str = down_str + ")"
print("Down: ", down_str)
print("Down Count: ", down_cn)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up: =sum(D6:Y6,D7:X7,D8:W8,D9:V9,D10:U10,D11:T11,D12:S12,D13:R13,D14:Q14,D15:P15,D16:O16,D17:N17,D18:M18,D19:L19,D20:K20,D21:J21,D22:I22,D23:H23,D24:G24,D25:F25,D26:E26,D27:D27,)
Up Count: 253
Mid: =sum(E27:N27,F26:O26,G25:P25,H24:Q24,I23:R23,J22:S22,K21:T21,L20:U20,M19:V19,N18:W18,O17:X17,P16:Y16,Q15:Z15,R14:AA14,S13:AB13,T12:AC12,U11:AD11,V10:AE10,W9:AF9,X8:AG8,Y7:AH7,Z6:AI6,)
Mid Count: 220
Down: =sum(D28:M28,D29:L29,D30:K30,D31:J31,D32:I32,D33:H33,D34:G34,D35:F35,D36:E36,D37:D37,)
Down Count: 55