作者:乔山办公网日期:
返回目录:excel表格制作
要你规划求百解吧:
1、D2输入
=SUMPRODUCT(B2:B24,C2:C24)
回车
2、E2输入
=IF(ROW()>SUM(C$2:C$24),"",INDEX(B$2:B$24,SMALL(IF(C$2:C$24=1,ROW($1:$23),4^8),ROW(1:1))))
数组公式,输入公式后先不度要回车,按Ctrl+Shift+Enter结束计算。再知向下填充至E24
3、菜单栏——数据道——分析版块——规划求解:
但你的B列里面,找不到之和=11600.50的具体回数据:
C列没有答=1的;E列返回不出B列数据。
这个就是VLOOKUP函数最拿百手度的了。你的A、J列总是要手问工确定的吧。
K3 的公答式:回=VLOOKUP(J3,$A$3:$H$8,COLUMN(B1),0) 向右拖到答Q列,再向下拖
B10 的公式:=VLOOKUP(A10,$A$3:$H$8,COLUMN(B1),0) 向下拖
代码里不是有zd
lRow = .Range("A65536").End(xlUp).Row
For i = lRow To 2 Step-1
If .Cells(i, 1).Value = .Cells(i - 1, 1).ValueThen
.Range(.Cells(i- 1, 1), .Cells(i, 1)).Merge
A65536表示A列 ,Cells(i, 1)也表示A列,
如果是B列
将A修改内为B ; 将括号后面里的1,全部容写为2
以此类推
C D ....F列
您的列只显示到W,不知后面有没有,W对应的列数是23,如果后面还有,自己改动,还有,我的程序是按由小到大的原始顺序来的,所以结果和您的顺序不一样。
方法是,工具,宏,宏,新建宏,删除原来代码,复制以下代码。
运行时点工具,宏,宏,选中cal,点执行,如果被阻止的话,从宏子菜单里点安全性,选择最低,保存,关闭,重新打开就行了。
Sub cal()
Sheets("sheet1").Select '选中表1
Row = 0
For col = 1 To 23 '23是W列的数字e79fa5e98193e78988e69d83366形式,如果后面还有,作相应改动。
i = 1
Row = Row + 1
Do While Sheets("sheet1").Cells(i + 2, col) <> "" '循环直到当前列的倒数第3个数字
j = i + 1
Do While Sheets("sheet1").Cells(j + 1, col) <> "" '循环直到当前列的倒数第2个数字
k = j + 1
Do While Sheets("sheet1").Cells(k, col) <> "" '循环直到当前列的最后1个数字
Sheets("sheet2").Cells(Row, 3) = Sheets("sheet1").Cells(i, col)
Sheets("sheet2").Cells(Row, 2) = Sheets("sheet1").Cells(j, col)
Sheets("sheet2").Cells(Row, 1) = Sheets("sheet1").Cells(k, col)
k = k + 1
Row = Row + 1
Loop
j = j + 1
Loop
i = i + 1
Loop
Next
End Sub