Vba 是否可以在不知道目标范围的情况下执行此SumIf?
这是到目前为止我的代码,请参考此代码以了解我正在尝试执行的操作Vba 是否可以在不知道目标范围的情况下执行此SumIf?,vba,excel,excel-formula,excel-2010,Vba,Excel,Excel Formula,Excel 2010,这是到目前为止我的代码,请参考此代码以了解我正在尝试执行的操作 =SUM(IF(LEFT(C$2,4)="/111",SUM(C3,G3))) 如您所见,我定义了C2,即标题的点,在Sum中,我定义了Sum范围。我现在有一个问题: 如果我不知道标题的确切位置,但我 知道我在寻找标题的“部分”。我如何搜索 这和一个哈卢库普?这是因为这些标题几乎可以按任何顺序放置,因此,我需要搜索文本,而不是定义其位置 例如,我有以下表格: +-------------+-------------+
=SUM(IF(LEFT(C$2,4)="/111",SUM(C3,G3)))
如您所见,我定义了C2,即标题的点,在Sum中,我定义了Sum范围。我现在有一个问题:
- 如果我不知道标题的确切位置,但我 知道我在寻找标题的“部分”。我如何搜索 这和一个哈卢库普?这是因为这些标题几乎可以按任何顺序放置,因此,我需要搜索文本,而不是定义其位置
+-------------+-------------+-------------+-------------+-------------+
| A | B | C | D | E |
+---+-------------+-------------+-------------+-------------+-------------+
| 1 |/650 - Black |/670 - White |/800 - White |/680 - Red |/650 - Black |
+---+-------------+-------------+-------------+-------------+-------------+
| 2 | 250 | 400 | 100 | 300 | 125 |
+---+-------------+-------------+-------------+-------------+-------------+
我想总结一下我指定了4个字符的左限制标题的数据行,就像我发布的代码一样。这里的问题是,代码更像是一个“This.Cell,如果它是您想要的标题,请添加内容”当我想要更像“Where.Cell匹配左有限标题时,请添加它们的内容(通过其他匹配水平,而不是垂直)我认为索引匹配是我要寻找的,但从我收集的数据来看,数据必须在单元格上定义,根据上表,单元格中不包含数据
我创建了一个单独的问题,因为我认为第一次没有正确说明要求,导致了不同的方向和不同的答案
纯公式是首选,但如果VBA是你想到的,我还是想读一下
TLDR:在excel中,我定义了几个左限制标题,左限制是因为超过了/和四位数字,文本的其余部分可能会不同。我在工作表中搜索这些标题,找到后,我将它们相加,并将它们放在这个公式的点上
我希望这次我能更清楚地说明我的要求
编辑:
所以我只想重申,这个公式的要求是,尽管我写了上面的表格,但我不知道我的标题在哪里。我的想法是,我将始终使用a/650、a/670或a/680。在这一点上,数字排列甚至不重要。我不知道这是否可行,因为,因为我不知道是什么时候标题是什么,只是它们是什么,我不知道单元格将在哪个字母上,只是它是“找到标题的单元格”
假设I want/670和a/680。公式首先找到标题/670,然后得到它的单元格空间,就像“/670在C1上一样!因此,必须添加的数字是C2!“。继续下一步,/680并执行相同的操作。最后,我在公式上按enter键,得出这两个标题的总和=700
我考虑的是C代码,我可能会说要添加的范围是基于我找到的标题字母,不知道excel是否可以作为一个可拖动的公式做得更少,这就是我发布这个问题的原因。根据您的示例表和您的描述,这就是
SUMPRODUCT
的用途数组的UCT。这里第一个数组是一个0或1的数组,如果标头与所需标头之一匹配,则为1。如果标头与所需标头不匹配,则为0。第二个数组是要求和的值的数组
因此:
将导致1075=250+400+300+125
所需的标题也可以在单元格范围内给出。但这必须是一个列范围(1列,多行)。例如
G
1 /650
2 /670
3 /680
然后:
我假设,您要查找的是一个数组公式,它与您已经使用的几乎相同:
{=SUM(IF(LEFT(A1:A3,4)="/670",B1:B3),IF(LEFT(A1:A3,4)="/680",B1:B3))}
点击
CTRL
+SHIFT
+ENTER
请显示可能的最小完整输入数据和相应的所需输出您可以尝试使用SumIf公式:=SUMIFS(A2:G2,条件范围,=/111”)
,但需要您使用=Left()
值。当我重新阅读问题时,我给出的答案不合适。因此我将其删除。请澄清给定表格中标题以“/670”开头的结果是什么?是否:如果任何标题以“/670”开头,则将整行相加“?@AxelRichter,哦,不。更多的变量被抛到方程中。比如,如果我要包括/670、/650、/680,我要添加这些的行值。我不知道的是如何处理这样一个事实:我不知道这些头在哪里,所以我不知道如何对数据所在的单元格进行命名。我将用一个例子更新OP,其中您“将包括/670、/650、/680”?请在问题中显示所需的结果。
=SUMPRODUCT((LEFT($A$1:$E$1,4)=$G$1:$G$3)*$A$2:$E$2)
{=SUM(IF(LEFT(A1:A3,4)="/670",B1:B3),IF(LEFT(A1:A3,4)="/680",B1:B3))}