【求助】求一个公式
excel吧
全部回复
仅看楼主
level 11
tmxzp 楼主
如下图,A2~A9是序号
B2~M9是序号所在1-12月份对应的数据
B11~M11可以填序号
B12~M12就需要把B11~M11中所填需要对应的数据加起来
(11行的序号会增加或减少,12行的数据要做相应的计算)
请问这个公式要怎么编写
谢谢。
2021年09月23日 12点09分 1
level 8
B12
=SUM(($B$2:$M$9*($A$2:$A$9=B11)))
按CTRL+SHIFT+ENTER后横拖公式
2021年09月23日 13点09分 2
多了括号,也没关系
2021年09月23日 13点09分
4楼用了你的公式展示,不能得到要的结果
2021年09月24日 01点09分
level 10
直接选中这些按ALT+等于号就可以出来了啊,有必要这样计算么?
2021年09月23日 14点09分 3
level 11
tmxzp 楼主
2楼的公式不能解决问题啊
2021年09月24日 01点09分 4
没看出不对啊[疑问]
2021年09月24日 01点09分
@huangwq0 我选了A,B,C,D,那求和就应该是四项全部加起来。可是第一个求和结果是300,这是只算了C吧?
2021年09月24日 01点09分
那不是三个100的和吗?
2021年09月24日 02点09分
不是把其后面的那一行求和吗?
2021年09月24日 02点09分
level 13
=SUM(COUNTIF(B12:I12,A2:A9)*OFFSET(A2,0,1,8,1))
2021年09月24日 05点09分 5
offset后面的第一个1就是移1列到一月,二月时改为2。如果结果处各月的位置有规律,也可以用公式。
2021年09月24日 05点09分
@huangwq0 6楼是你的公式结果,貌似不行啊
2021年09月24日 13点09分
三键,数组公式
2021年09月25日 12点09分
level 11
tmxzp 楼主
5楼的公式结果
2021年09月24日 13点09分 6
=SUM(COUNTIF(B12:I12,A2:A9)*N(OFFSET(A2,0,COLUMN(A:L),8,1)))数组三键
2021年09月26日 00点09分
level 11
tmxzp 楼主
看来是我的表述不太清楚,导致很多人误解了
我把表格优化一下,设置成一个案例的形式
现在我需要在黄色标记的地方,用一个公式能算一下每个工厂每个月收到的需求量。
每个工厂的客户是不一样的,我标记在黄色行的上方,
公式需要能根据客户的不同,自动抓取上方总表中的需求数量并求和。
@陆凌侯 @白音碎 @huangwq0
谢谢。
2021年09月24日 13点09分 8
level 7
我理解也就是13行的值应为700(A+F),17行的值是1200(A+C+H)?
2021年09月24日 15点09分 10
是的,其实直接用简单加法公式就可以实现,但是我还要另外一个效果,就是每个工厂增加或减少客户的时候,不需要重新编公式,而是自动计算。
2021年09月24日 16点09分
@tmxzp 这样你的表设计得不好,误导了很多人。[小乖]当然公式也可以运算,不过会产生很多运算导致整个表卡死。个人建议把客户设计为竖列,月份为横向(跟你的数据源表一样的排列),只需要填写竖列的客户,公式进行对应匹配,加多一行汇总,整个表就简单易懂多了
2021年09月24日 16点09分
level 14
不明白 模拟一下答案看看
2021年09月24日 15点09分 11
level 10
=SUMPRODUCT($B$2:$M$9*($A$2:$A$9=B13)*($B$1:$M$1=B12))
2021年09月24日 15点09分 12
=SUMPRODUCT($B$2:$M$9,($A$2:$A$9=B13)*($B$1:$M$1=B12)) 第一个是,好一点
2021年09月24日 15点09分
@白音碎 1号有客户A和F,我要的效果就是1~12月份,都是A+F,如果增加一个客户,就会自动把那个客户的数据相应的加进去。
2021年09月24日 16点09分
level 14
猜的
2021年09月24日 15点09分 13
d16的结果应该是D2+D4+D9, 即客户A,C,H在3月需求的总和。D2+D4+D9应该=1+7+1=9
2021年09月24日 16点09分
level 11
tmxzp 楼主
@凶恶毛里😈
其实我要的效果很简单,如果用简单的公式,可以直接加起来,
但是就是添加客户的时候,需要重新编辑公式,比较麻烦
2021年09月24日 15点09分 14
level 14
2021年09月24日 17点09分 16
这样算,E14的数据是0,E14还是要加总A,F,E三个客户在4月份的总需求。
2021年09月25日 04点09分
我无话可说了 你就不会把if拿走吗[黑线]
2021年09月25日 06点09分
level 8
=IF(A16=0,0,SUM(IF($A16=0,0,INDIRECT($A16&COLUMN())),IF($B16=0,0,INDIRECT($B16&COLUMN())),IF($C16=0,0,INDIRECT($C16&COLUMN())),IF($D16=0,0,INDIRECT($D16&COLUMN())),IF($E16=0,0,INDIRECT($E16&COLUMN())),IF($F16=0,0,INDIRECT($F16&COLUMN())),IF($G16=0,0,INDIRECT($G16&COLUMN()))))
附上源代码,感觉有点复杂了,但是效果不错。
2021年09月24日 19点09分 17
上面的表格横竖不能交换的,是基础数据。
2021年09月25日 04点09分
@tmxzp 这只是我临时想出来的,不还我想也没有多大问题,只是要把ABC换成数字
2021年09月25日 11点09分
level 11
'看谁先猜着
Option Explicit
Sub abc()
 Dim i, j, a, d, p, t, sum
 Set d = CreateObject("scripting.dictionary")
 a = [a1].CurrentRegion.Value
 For j = 2 To UBound(a, 2)
  For i = 2 To UBound(a)
   d(a(1, j) & a(i, 1)) = a(i, j)
  Next
 Next
 i = Cells(Rows.Count, "a").End(xlUp).Row
 If i = UBound(a) Then MsgBox "!": Exit Sub
 p = UBound(a) + 1
 a = Range("a" & p & ":a" & i).Resize(, UBound(a, 2)).Value
 For i = 1 To UBound(a)
  If InStr(a(i, 1), "客户") Then
   For j = 2 To UBound(a, 2)
    If Len(a(i, j)) Then
     t = a(i - 1, j) & a(i, j)
     If d.exists(t) Then
      sum = sum + d(t)
     Else
      sum = "不存在:" & t: Exit For
     End If
    End If
   Next
   For j = 2 To UBound(a, 2)
    a(i + 1, j) = sum
   Next
   i = i + 2: sum = 0
  End If
 Next
 Cells(p, "a").Resize(UBound(a), UBound(a, 2)) = a
End Sub
2021年09月24日 22点09分 18
客户1在2月份的需求就应该是A+F在2月份的数据,即C2+C7=11+16=27啊
2021年09月25日 04点09分
1 2 尾页