如何对不同的 sheet 进行加法和减法,并在 excel 中的另一个 sheet 上显示结果
How to do addition and subtraction from different sheet and show result on another sheet in excel
我有三个 sheets 直播,买卖,我在那里维护物品。在 Buy sheet 中,我跟踪所有购买商品以及购买价格和数量,在 sell sheet 中跟踪卖单。在 Live sheet 我想看看还有多少物品。
如果我购买了 200 件 XYZ 物品并卖出了 100 件物品,那么在 Live sheet 中它应该显示 100 件物品 XYZ.重要的一点是,我只在两个 sheet 买入和卖出中添加条目。我要 Live sheet 应该会自动更新。
在我目前的 sheet 中,我使用以下公式自动更新 Live sheet 但它有一个缺点,我不能为同一商品添加多个订单。我正在按多个订单购买商品,如下图所示。
=IF(ISBLANK(Buy!C3)," ",Buy!C:C)
买入 Sheet –
卖出Sheet –
直播sheet应该是这样的-
我厌倦了一些基本公式,例如 vlookup、if 等,但这不起作用。
excel里面有没有formula/trick做这样的操作?
以下是软件详情-
我需要的答案应适用于 2013 年之后的所有 excel 版本。
这是我的示例文件
https://drive.google.com/file/d/1CFJqTYi75eiUnEqUoHP2py9x7qphGpMHZ/view?usp=sharing
请帮忙,谢谢你的帮助……!
更新:您可以尝试这种新方法={UNIQUE(Buy!A:A), {"Price";ArrayFormula((SUMIF(Buy!A2:A, UNIQUE(Buy!A2:A), Buy!B2:B))-(SUMIF(Sell!A2:A, UNIQUE(Buy!A2:A), Sell!B2:B)))}}
。我的系统上没有 Excel,所以我无法在 Excel 中查看它。但是因为这个没有使用 Query
它应该也适用于 Excel。
上一个回答:
在Live
sheet的A1
中使用这个公式:
=QUERY({QUERY(Buy!A1:B, "select A, B where A is not null", 1);QUERY(Sell!A2:B, "select A, -1*B where A is not null label -1*B ''", 0)}, "select Col1, sum(Col2) group by Col1 label sum(Col2) 'Price'", 1)
假设所有数据(包括headers)在Buy
和Sell
sheets中从A1
开始。
你可以用这样的一个查询来完成:
=arrayformula(query({Buy!A2:B;Sell!A2:A,-Sell!B2:B},"select Col1,sum(Col2) where Col1 is not null group by Col1 label Col1 'Item',sum(Col2) 'Price' ",0))
我能找到的唯一方法真的很麻烦。在这里 - 需要 Excel 2019 或 365:
在 Live 的单元格 A2 中,输入此公式以导出所有唯一项目:
=LET( buys, Buy!A:B,
sales, Sell!A:B,
bMatrix, FILTER( buys,NOT( ISBLANK( INDEX( buys, , 1 ) ) )*(INDEX( buys, , 1 )<>"Item") ),
bItems, INDEX( bMatrix, , 1 ), rB, ROWS( bItems ),
sMatrix, FILTER( sales,NOT( ISBLANK( INDEX( sales, , 1 ) ) )*(INDEX( sales, , 1 )<>"Item") ),
sItems, INDEX( sMatrix, , 1 ), sB, ROWS( sItems ),
idx, MOD( SEQUENCE( rB + sB,,0 ), rB) + 1,
UNIQUE( IFERROR( INDEX( bItems, idx, 1 ), sItems ) )
)
在 Live 的单元格 B2 中输入以下公式:
=SUMIF( Buy!A:A, A2#, Buy!B:B ) - SUMIF( Sell!A:A, A2#, Sell!B:B )
结果如下所示:
这运行得非常慢,因为它试图从列中发现数组。如果您改为使用 Excel 表,它会加快速度。我创建了 tBuy 和 tSell,Live!A2 中的公式变为:
=LET( buys, tBuy,
sales, tSell,
bItems, INDEX( tBuy, , 1 ), rB, ROWS( bItems ),
sItems, INDEX( tSell, , 1 ), sB, ROWS( sItems ),
idx, MOD( SEQUENCE( rB + sB,,0 ), rB) + 1,
UNIQUE( IFERROR( INDEX( bItems, idx, 1 ), sItems ) )
)
在 Live!B2 中变为:
=SUMIF( tBuy[Item], D2#, tBuy[Price] ) - SUMIF( tSell[Item], D2#, tSell[Price] )
这是对我之前回答的完整修订,其中包含了 VikaS GuttE 的评论。
假设
- 您可以有一个额外的选项卡
- “买入”、“卖出”和“实时”的结构是固定的,例如从第 2 行的标题开始。
对先前方法的更改
- “买入”、“卖出”和“实时”不需要额外的列。
- 辅助列从 12 个减少到 3 个。如果商品不能在“销售”选项卡上列出但也不能在“购买”选项卡上列出,则可以进一步减少到 2 个。
选项卡
“计算”选项卡
目的:检索唯一项列表。
突出显示的区域包含以下公式:
- “买入”(蓝色):
=IF(COUNTIF(Buy!B:B3,Buy!B3)=1,MAX(B:B2)+1))
。它计算同一行但在“购买”选项卡上的项目到目前为止出现的频率。如果它是第一次出现,则将到目前为止的最大值加 1。这样,我就得到了每个唯一项目的唯一序列。
- “卖出”(绿色):
=IF(COUNTIF(buy_item,Sell!B3)>0,FALSE,IF(COUNTIF(Sell!B:B3,Sell!B3)=1,MAX(calc_buy)+MAX($C2:C2)+1))
。它会检查同一行但位于“销售”选项卡上的项目是否已出现在“购买”选项卡上。在这种情况下,结果为 FALSE,否则它会检查这是否是商品第一次出现在 Sell 选项卡上。在这种情况下,它采用到目前为止该列中的当前最大值,加上购买列的最大值和另一个 1,以继续从购买列开始的序列。这样一来,每件商品都会获得一个唯一的编号,无论它是在购买、出售还是同时在两个选项卡上列出。
- “独特”(橙色):
=IF(ROW()-2>MAX(calc_sell),"",IF(ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))),INDEX(sell_item,MATCH(ROW()-2,calc_sell,0)),INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))))
。它检查当前行减去 2(因为公式从第 3 行开始)是否高于卖出列的最大值。在这种情况下,不再有唯一项并且单元格保持为空。否则,它会检查是否可以在“购买”选项卡上找到当前项目。如果没有,该项目将从“销售”选项卡中取出。
实时选项卡
突出显示的区域包含以下公式:
- “项目”(紫色):
=Calc!E3
。这只是对独特项目列表中当前条目的引用。
- “价格”(红色):
=IF(B3="","",SUMIF(buy_item,B3,buy_price)-SUMIF(sell_item,B3,sell_price))
。它检查同一行中是否有有效项目。如果是,它将计算该项目的所有买入价并减去所有卖出价。
“购买”选项卡
“卖出”选项卡
命名范围
- buy_item: =买入!$B:$B
- buy_price:=买入!$C:$C
- calc_buy: =计算!$B:$B
- calc_sell:=计算!$C:$C
- sell_item:=卖出!$B:$B
- sell_price:=卖出!$C:$C
使用的公式
- COUNTIF (Excel 2003+)
- 索引 (Excel 2003+)
- 匹配 (Excel 2003+)
- MAX (Excel 2003+)
- 行 (Excel 2003+)
- SUMIF (Excel 2003+)
- IFNA (Excel 2013+)
In-depth公式解释
Calc 选项卡,标题为 Buy 的“B”列,蓝色区域:=IF(COUNTIF(Buy!B:B3,Buy!B3)=1,MAX(B:B2)+1))
让我们分解一下:
=IF(does_item_occur_for_first_time, next_unique_number)
- does_item_occur_for_first_time =
COUNTIF(Buy!B:B3,Buy!B3)=1
Buy!B:B3
这引用了“购买”选项卡上的“项目”列。由于标题位于第 2 行,因此我从第 3 行开始。重要 请注意范围的确切定义。只有范围定义开始部分的行(冒号左边的术语)由它前面的美元符号固定。范围末尾部分(冒号右边的部分)的行不固定。这样,范围随着每一行而增长,并且它只检查到目前为止的值。
'Buy!B3' 将“购买”选项卡上单元格 B3 的内容作为“COUNTIF”公式的条件。 重要 所有四个选项卡都需要具有相同的结构,这意味着标题应从同一行开始。此外,“商品”和“价格”两栏在“买入”、“卖出”和“直播”三个选项卡上的顺序和栏目必须相同。也许,将这三个选项卡视为 3D 立方体中的不同 z-levels 会有所帮助。上面的公式位于“计算”选项卡上的单元格 B3 中,因此它检查“购买”选项卡上单元格 B3 的内容。
将“does_item_occur_for_first_time”的这些片段放在一起,它就是它所说的。它会检查同一单元格中但在“购买”选项卡上的项目是否是第一次出现,这意味着该单元格上方没有条目已经具有该给定项目。
- next_unique_number =
MAX(B:B2)+1)
。我们看上面的区域(看,只有冒号左边那一行是固定的($)来判断最新的数字。当没有数值的时候(比如空单元格oheadline),然后它假定为 0。我们所要做的就是加 1 以获得下一个数字。 请注意增长范围从第 2 行开始,因为我们要确定第 3 行的数字。
“计算”选项卡,“C”列,标题为 卖出,绿色区域:=IF(COUNTIF(buy_item,Sell!B3)>0,FALSE,IF(COUNTIF(Sell!B:B3,Sell!B3)=1,MAX(calc_buy)+MAX($C2:C2)+1))
=IF(did_item_occur_on_buy_tab,FALSE,IF(does_item_occur_on_sell_tab_for_the_first_time,next_unique_number_overall))
did_item_occur_on_buy_tab=COUNTIF(buy_item,Sell!B3)>0
"COUNTIF" 用于确定 Sell(!) 选项卡上 B3 中的当前项目是否已在“Buy”选项卡上列出。如果是这样,则此公式的结果为“FALSE”。请注意:这次我们检查“购买”选项卡上的整个“项目”列。
does_item_occur_on_sell_tab_for_the_first_time = ´COUNTIF(卖出!B$3:B3,卖出!B3)=1´
这个公式类似于上面解释的“does_item_occur_for_the_first_time”。 请注意“销售”选项卡上的列与公式单元格的列不匹配,因为“项目”位于“B”列中,而“B”列已在“计算”选项卡上被占用。
next_unique_number_整体 = MAX(calc_buy)+MAX($C2:C2)+1
第二部分(加号之后)类似于上面解释的“next_unique_number”。不同之处在于第一部分,因为我们不想从 1 开始您的序列,而是从“购买”列的最大数量开始。
“计算”选项卡,带有标题 唯一 的“E”列,橙色区域:=IF(ROW()-2>MAX(calc_sell),"-",IF(ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))),INDEX(sell_item,MATCH(ROW()-2,calc_sell,0)),INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))))
=IF(is_there_another_unique_item,"",IF(the_item_did_not_occur_on_buy_tab,get_item_from_sell_tab,get_item_from_buy_tab))
is_there_another_unique_item=ROW()-2>MAX(calc_sell)
。我们检查当前行减去 2(因为标题位于第 2 行)是否大于唯一项目的最大数量。如果是这样,那么我们什么也不显示 ("")。
the_item_did_not_occur_on_buy_tab=ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0)))
。 MATCH(ROW()-2,calc_buy,0)
在“calc_buy”列中查找等于当前行减 2 的数字。结果是“N/A”或与“[=265=”相关的行]" 包含相应项目名称的范围。在这里,术语被包装到“ISNA”中,因为我想确定数字(项目的第一次出现)是否属于“购买”或“销售”选项卡。 重要:所有命名范围,这里“buy_item”和“calc_buy”需要有相同的开始和结束行。为了方便起见,我将所有范围设置为包含完整列。
get_item_from_sell_tab=INDEX(sell_item,MATCH(ROW()-2,calc_sell,0))
。公式与上面相同,没有“ISNA”包装器。它从销售选项卡中选择项目的名称。
get_item_from_buy_tab=INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))
。第三次使用相同的公式。在这里,它从购买选项卡中选择商品名称。
陷阱以及如何避免它们
- Buy, Sell, Live 并在一定程度上 Calc 需要有相同的结构。每个选项卡的内容都必须从同一个单元格开始(此处为 B2)。如果你想添加或删除列或行,那么你应该 select 一次所有选项卡并执行该操作。 完成后不要忘记取消标签分组。
- 扩展 Calc 上的公式,直到它们涵盖您在 Buy 和 Sell 上的所有内容,例如如果购买功能 100 行并出售 150,则公式也应包含在标题下方的 150 行中。
- 所有命名范围都需要覆盖具有相同起始行和结束行的相同行。在这里,所有命名范围都覆盖了整个列。如果您不能使用名称,您可以替换它们购买相应的范围定义(见上文)。
我有三个 sheets 直播,买卖,我在那里维护物品。在 Buy sheet 中,我跟踪所有购买商品以及购买价格和数量,在 sell sheet 中跟踪卖单。在 Live sheet 我想看看还有多少物品。
如果我购买了 200 件 XYZ 物品并卖出了 100 件物品,那么在 Live sheet 中它应该显示 100 件物品 XYZ.重要的一点是,我只在两个 sheet 买入和卖出中添加条目。我要 Live sheet 应该会自动更新。
在我目前的 sheet 中,我使用以下公式自动更新 Live sheet 但它有一个缺点,我不能为同一商品添加多个订单。我正在按多个订单购买商品,如下图所示。
=IF(ISBLANK(Buy!C3)," ",Buy!C:C)
买入 Sheet –
卖出Sheet –
直播sheet应该是这样的-
我厌倦了一些基本公式,例如 vlookup、if 等,但这不起作用。 excel里面有没有formula/trick做这样的操作?
以下是软件详情-
我需要的答案应适用于 2013 年之后的所有 excel 版本。
这是我的示例文件
https://drive.google.com/file/d/1CFJqTYi75eiUnEqUoHP2py9x7qphGpMHZ/view?usp=sharing
请帮忙,谢谢你的帮助……!
更新:您可以尝试这种新方法={UNIQUE(Buy!A:A), {"Price";ArrayFormula((SUMIF(Buy!A2:A, UNIQUE(Buy!A2:A), Buy!B2:B))-(SUMIF(Sell!A2:A, UNIQUE(Buy!A2:A), Sell!B2:B)))}}
。我的系统上没有 Excel,所以我无法在 Excel 中查看它。但是因为这个没有使用 Query
它应该也适用于 Excel。
上一个回答:
在Live
sheet的A1
中使用这个公式:
=QUERY({QUERY(Buy!A1:B, "select A, B where A is not null", 1);QUERY(Sell!A2:B, "select A, -1*B where A is not null label -1*B ''", 0)}, "select Col1, sum(Col2) group by Col1 label sum(Col2) 'Price'", 1)
假设所有数据(包括headers)在Buy
和Sell
sheets中从A1
开始。
你可以用这样的一个查询来完成:
=arrayformula(query({Buy!A2:B;Sell!A2:A,-Sell!B2:B},"select Col1,sum(Col2) where Col1 is not null group by Col1 label Col1 'Item',sum(Col2) 'Price' ",0))
我能找到的唯一方法真的很麻烦。在这里 - 需要 Excel 2019 或 365:
在 Live 的单元格 A2 中,输入此公式以导出所有唯一项目:
=LET( buys, Buy!A:B,
sales, Sell!A:B,
bMatrix, FILTER( buys,NOT( ISBLANK( INDEX( buys, , 1 ) ) )*(INDEX( buys, , 1 )<>"Item") ),
bItems, INDEX( bMatrix, , 1 ), rB, ROWS( bItems ),
sMatrix, FILTER( sales,NOT( ISBLANK( INDEX( sales, , 1 ) ) )*(INDEX( sales, , 1 )<>"Item") ),
sItems, INDEX( sMatrix, , 1 ), sB, ROWS( sItems ),
idx, MOD( SEQUENCE( rB + sB,,0 ), rB) + 1,
UNIQUE( IFERROR( INDEX( bItems, idx, 1 ), sItems ) )
)
在 Live 的单元格 B2 中输入以下公式:
=SUMIF( Buy!A:A, A2#, Buy!B:B ) - SUMIF( Sell!A:A, A2#, Sell!B:B )
结果如下所示:
这运行得非常慢,因为它试图从列中发现数组。如果您改为使用 Excel 表,它会加快速度。我创建了 tBuy 和 tSell,Live!A2 中的公式变为:
=LET( buys, tBuy,
sales, tSell,
bItems, INDEX( tBuy, , 1 ), rB, ROWS( bItems ),
sItems, INDEX( tSell, , 1 ), sB, ROWS( sItems ),
idx, MOD( SEQUENCE( rB + sB,,0 ), rB) + 1,
UNIQUE( IFERROR( INDEX( bItems, idx, 1 ), sItems ) )
)
在 Live!B2 中变为:
=SUMIF( tBuy[Item], D2#, tBuy[Price] ) - SUMIF( tSell[Item], D2#, tSell[Price] )
这是对我之前回答的完整修订,其中包含了 VikaS GuttE 的评论。
假设
- 您可以有一个额外的选项卡
- “买入”、“卖出”和“实时”的结构是固定的,例如从第 2 行的标题开始。
对先前方法的更改
- “买入”、“卖出”和“实时”不需要额外的列。
- 辅助列从 12 个减少到 3 个。如果商品不能在“销售”选项卡上列出但也不能在“购买”选项卡上列出,则可以进一步减少到 2 个。
选项卡
“计算”选项卡
目的:检索唯一项列表。
突出显示的区域包含以下公式:
- “买入”(蓝色):
=IF(COUNTIF(Buy!B:B3,Buy!B3)=1,MAX(B:B2)+1))
。它计算同一行但在“购买”选项卡上的项目到目前为止出现的频率。如果它是第一次出现,则将到目前为止的最大值加 1。这样,我就得到了每个唯一项目的唯一序列。 - “卖出”(绿色):
=IF(COUNTIF(buy_item,Sell!B3)>0,FALSE,IF(COUNTIF(Sell!B:B3,Sell!B3)=1,MAX(calc_buy)+MAX($C2:C2)+1))
。它会检查同一行但位于“销售”选项卡上的项目是否已出现在“购买”选项卡上。在这种情况下,结果为 FALSE,否则它会检查这是否是商品第一次出现在 Sell 选项卡上。在这种情况下,它采用到目前为止该列中的当前最大值,加上购买列的最大值和另一个 1,以继续从购买列开始的序列。这样一来,每件商品都会获得一个唯一的编号,无论它是在购买、出售还是同时在两个选项卡上列出。 - “独特”(橙色):
=IF(ROW()-2>MAX(calc_sell),"",IF(ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))),INDEX(sell_item,MATCH(ROW()-2,calc_sell,0)),INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))))
。它检查当前行减去 2(因为公式从第 3 行开始)是否高于卖出列的最大值。在这种情况下,不再有唯一项并且单元格保持为空。否则,它会检查是否可以在“购买”选项卡上找到当前项目。如果没有,该项目将从“销售”选项卡中取出。
实时选项卡
突出显示的区域包含以下公式:
- “项目”(紫色):
=Calc!E3
。这只是对独特项目列表中当前条目的引用。 - “价格”(红色):
=IF(B3="","",SUMIF(buy_item,B3,buy_price)-SUMIF(sell_item,B3,sell_price))
。它检查同一行中是否有有效项目。如果是,它将计算该项目的所有买入价并减去所有卖出价。
“购买”选项卡
“卖出”选项卡
命名范围
- buy_item: =买入!$B:$B
- buy_price:=买入!$C:$C
- calc_buy: =计算!$B:$B
- calc_sell:=计算!$C:$C
- sell_item:=卖出!$B:$B
- sell_price:=卖出!$C:$C
使用的公式
- COUNTIF (Excel 2003+)
- 索引 (Excel 2003+)
- 匹配 (Excel 2003+)
- MAX (Excel 2003+)
- 行 (Excel 2003+)
- SUMIF (Excel 2003+)
- IFNA (Excel 2013+)
In-depth公式解释
Calc 选项卡,标题为 Buy 的“B”列,蓝色区域:=IF(COUNTIF(Buy!B:B3,Buy!B3)=1,MAX(B:B2)+1))
让我们分解一下:
=IF(does_item_occur_for_first_time, next_unique_number)
- does_item_occur_for_first_time =
COUNTIF(Buy!B:B3,Buy!B3)=1
Buy!B:B3
这引用了“购买”选项卡上的“项目”列。由于标题位于第 2 行,因此我从第 3 行开始。重要 请注意范围的确切定义。只有范围定义开始部分的行(冒号左边的术语)由它前面的美元符号固定。范围末尾部分(冒号右边的部分)的行不固定。这样,范围随着每一行而增长,并且它只检查到目前为止的值。 'Buy!B3' 将“购买”选项卡上单元格 B3 的内容作为“COUNTIF”公式的条件。 重要 所有四个选项卡都需要具有相同的结构,这意味着标题应从同一行开始。此外,“商品”和“价格”两栏在“买入”、“卖出”和“直播”三个选项卡上的顺序和栏目必须相同。也许,将这三个选项卡视为 3D 立方体中的不同 z-levels 会有所帮助。上面的公式位于“计算”选项卡上的单元格 B3 中,因此它检查“购买”选项卡上单元格 B3 的内容。
将“does_item_occur_for_first_time”的这些片段放在一起,它就是它所说的。它会检查同一单元格中但在“购买”选项卡上的项目是否是第一次出现,这意味着该单元格上方没有条目已经具有该给定项目。
- next_unique_number =
MAX(B:B2)+1)
。我们看上面的区域(看,只有冒号左边那一行是固定的($)来判断最新的数字。当没有数值的时候(比如空单元格oheadline),然后它假定为 0。我们所要做的就是加 1 以获得下一个数字。 请注意增长范围从第 2 行开始,因为我们要确定第 3 行的数字。
“计算”选项卡,“C”列,标题为 卖出,绿色区域:=IF(COUNTIF(buy_item,Sell!B3)>0,FALSE,IF(COUNTIF(Sell!B:B3,Sell!B3)=1,MAX(calc_buy)+MAX($C2:C2)+1))
=IF(did_item_occur_on_buy_tab,FALSE,IF(does_item_occur_on_sell_tab_for_the_first_time,next_unique_number_overall))
did_item_occur_on_buy_tab=
COUNTIF(buy_item,Sell!B3)>0
"COUNTIF" 用于确定 Sell(!) 选项卡上 B3 中的当前项目是否已在“Buy”选项卡上列出。如果是这样,则此公式的结果为“FALSE”。请注意:这次我们检查“购买”选项卡上的整个“项目”列。does_item_occur_on_sell_tab_for_the_first_time = ´COUNTIF(卖出!B$3:B3,卖出!B3)=1´ 这个公式类似于上面解释的“does_item_occur_for_the_first_time”。 请注意“销售”选项卡上的列与公式单元格的列不匹配,因为“项目”位于“B”列中,而“B”列已在“计算”选项卡上被占用。
next_unique_number_整体 =
MAX(calc_buy)+MAX($C2:C2)+1
第二部分(加号之后)类似于上面解释的“next_unique_number”。不同之处在于第一部分,因为我们不想从 1 开始您的序列,而是从“购买”列的最大数量开始。
“计算”选项卡,带有标题 唯一 的“E”列,橙色区域:=IF(ROW()-2>MAX(calc_sell),"-",IF(ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))),INDEX(sell_item,MATCH(ROW()-2,calc_sell,0)),INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))))
=IF(is_there_another_unique_item,"",IF(the_item_did_not_occur_on_buy_tab,get_item_from_sell_tab,get_item_from_buy_tab))
is_there_another_unique_item=
ROW()-2>MAX(calc_sell)
。我们检查当前行减去 2(因为标题位于第 2 行)是否大于唯一项目的最大数量。如果是这样,那么我们什么也不显示 ("")。the_item_did_not_occur_on_buy_tab=
ISNA(INDEX(buy_item,MATCH(ROW()-2,calc_buy,0)))
。MATCH(ROW()-2,calc_buy,0)
在“calc_buy”列中查找等于当前行减 2 的数字。结果是“N/A”或与“[=265=”相关的行]" 包含相应项目名称的范围。在这里,术语被包装到“ISNA”中,因为我想确定数字(项目的第一次出现)是否属于“购买”或“销售”选项卡。 重要:所有命名范围,这里“buy_item”和“calc_buy”需要有相同的开始和结束行。为了方便起见,我将所有范围设置为包含完整列。get_item_from_sell_tab=
INDEX(sell_item,MATCH(ROW()-2,calc_sell,0))
。公式与上面相同,没有“ISNA”包装器。它从销售选项卡中选择项目的名称。get_item_from_buy_tab=
INDEX(buy_item,MATCH(ROW()-2,calc_buy,0))
。第三次使用相同的公式。在这里,它从购买选项卡中选择商品名称。
陷阱以及如何避免它们
- Buy, Sell, Live 并在一定程度上 Calc 需要有相同的结构。每个选项卡的内容都必须从同一个单元格开始(此处为 B2)。如果你想添加或删除列或行,那么你应该 select 一次所有选项卡并执行该操作。 完成后不要忘记取消标签分组。
- 扩展 Calc 上的公式,直到它们涵盖您在 Buy 和 Sell 上的所有内容,例如如果购买功能 100 行并出售 150,则公式也应包含在标题下方的 150 行中。
- 所有命名范围都需要覆盖具有相同起始行和结束行的相同行。在这里,所有命名范围都覆盖了整个列。如果您不能使用名称,您可以替换它们购买相应的范围定义(见上文)。