自定义销售职责下的价目表不能对物料编码报价

系统版本:

          RDBMS :9.2.0.6.0

         Oracle 应用产品 : 11.5.10.2

业务场景:

       客户需要退半成品物料,由于之前该半成品物料没有设置可以销售,让产品工程部的用户把相关(订单管理)设置项配好以后。销售的同事新增价目表行时,无法选择至该物料。如下图


但是,我用标准销售超级用户是可以在价目表中新增。如下:

<think>我们有两个表格,每个表格都有物料编码和对应的需求数量。我们需要找出相同物料在两张表中的需求数量差异。 步骤: 1. 将两个表格的数据分别整理好,确保都有物料编码和需求数量两列。 2. 使用VLOOKUP函数或者XLOOKUP函数(如果Excel版本支持)将第二个表中的需求数量匹配到第一个表中。 3. 在第一个表中,用匹配到的第二个表的需求数量减去第一个表的需求数量,得到差异。 具体操作: 假设表1在Sheet1,表2在Sheet2。 表1结构: A列:物料编码 B列:需求数量 表2结构: A列:物料编码 B列:需求数量 在表1的C列(或者其他空白列)中,我们可以使用VLOOKUP从表2中获取需求数量。 在表1的C2单元格输入公式: =VLOOKUP(A2, Sheet2!A:B, 2, FALSE) 这个公式的意思是:在Sheet2的A:B列中查找当前行物料编码(A2)相同的行,并返回第2列(即B列)的值。 注意:如果找不到,会返回#N/A,我们可以使用IFERROR函数来处理错误。 改进公式: =IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), 0) 然后,在表1的D列计算差异: =C2 - B2 (或者根据你的需求,可能是B2-C2,注意顺序) 这样,D列就是两个表中相同物料的需求数量差异(表2的需求数量减去表1的需求数量)。 但是,我们也要考虑表2中有而表1中没有的物料。如果需要,我们可以在表2中也进行类似操作,但通常我们只需要在一个表中进行对比,然后筛选出差异不为0的行即可。 另一种方法:使用合并计算或者数据透视表,但上述方法较为直接。 如果使用XLOOKUP(Excel 365或2021版本以上): =XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, 0) 然后同样计算差异。 步骤总结: 1. 在表1中,使用查找函数(VLOOKUP或XLOOKUP)将表2的需求数量匹配过来。 2. 在表1中做减法得到差异。 3. 筛选差异列,非零的即为有差异的物料。 注意:如果两个表都有一些对方没有的物料,那么上述操作在表1中只能看到表1存在的物料的差异。如果也要看表2独有的物料,那么需要将两个表合并到一个新表中,使用类似的方法分别匹配两个表的需求数量,然后计算差异。这时可以使用Power Query或者数据透视表。 如果需要同时查看两个表的所有物料,我们可以这样做: 方法二:使用Power Query(推荐,适合数据量大或需要经常对比的情况) 1. 将两个表分别加载到Power Query中。 2. 分别重命名需求数量列,例如表1的需求数量列改为“需求数量1”,表2的改为“需求数量2”。 3. 全外连接两个表,以物料编码为键。 4. 将匹配不到的值用0替换。 5. 添加自定义列,计算差异(需求数量2-需求数量1)。 6. 加载到新工作表。 方法三:使用数据透视表 1. 将两个表的数据合并到一个表中,并添加一个标识列,例如“表1”和“表2”。 2. 插入数据透视表,行标签为物料编码,列标签为标识列,值为需求数量的求和。 3. 这样每个物料在两表中的需求数量会出现在同一行,然后添加计算字段求差。 但根据问题,我们使用第一种方法即可,因为问题要求是相同物料的需求数量差异。 因此,我们按照第一种方法操作。 示例: 表1(Sheet1): A B 物料1 100 物料2 200 物料3 300 表2(Sheet2): A B 物料1 110 物料2 200 物料4 400 在Sheet1的C2输入:=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), 0) 结果:C2=110,C3=200,C4=0(因为物料3在表2中没有,我们用了0代替) 然后D2=C2-B2:110-100=10(物料1的差异),200-200=0(物料2),0-300=-300(物料3) 这样我们就得到了差异。 但是,我们可能只关心相同物料的差异,那么物料3在表2中没有,我们可以选择不显示或者特别标注。我们可以增加一列判断是否存在表2中: 在E2输入:=IF(ISNA(VLOOKUP(A2, Sheet2!A:B, 2, FALSE)), "表2中不存在", "存在") 这样我们可以筛选出“存在”的物料,然后看差异。 或者我们只关心有差异的(包括数量差异和存在性差异),那么直接看D列非0即可。 根据用户问题,是“相同物料”的需求数量差异,那么我们可以只处理两个表都存在的物料。因此,我们可以先筛选出两个表都存在的物料,然后计算差异。 修改步骤: 在Sheet1的C列使用VLOOKUP时,如果找不到,我们就不计算差异,而是标记为“不在表2中”,然后我们只计算能找到的物料的差异。 公式调整: 在C2:=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), "不在表2中") 在D2:=IF(C2="不在表2中", "", C2-B2) 这样,对于表2中不存在的物料,差异列就留空。 然后,我们可以筛选D列中非空的单元格,查看差异。 总结:根据具体需求选择处理方式。 这里我们给出两种方式: 1. 简单对比相同物料的差异(忽略只在一个表中存在的物料)。 2. 同时考虑物料存在性的差异(即一个表有另一个表没有的物料,视为差异)。 用户问题中要求的是“相同物料”,所以我们采用第一种:只对比两个表都有的物料。 因此,我们可以在Sheet1中: C2: =IFERROR(VLOOKUP(A2, Sheet2!$A$2:$B$1000, 2, FALSE), "不存在") D2: =IF(C2="不存在", "", C2-B2) 然后筛选掉D列中为空的,剩下的就是相同物料的差异。 注意:VLOOKUP的第二个参数范围最好使用绝对引用,并覆盖表2的所有数据。 如果两个表的数据量都很大,我们可以使用动态范围或者表格结构化引用(推荐)。 使用表格结构化引用: 将表2转换为Excel表格(选中表2的数据,按Ctrl+T),并命名为Table2。 则公式可以写为:=IFERROR(VLOOKUP(A2, Table2, 2, FALSE), "不存在") 这样当表2数据增加时,范围会自动扩展。 最后,为了清晰,我们可以将差异列中为0的也筛选出来,但0表示无差异,所以我们可以只显示非0差异。 操作: 选中D列,点击“数据”选项卡中的“筛选”,然后点击D列的下拉箭头,选择“不等于0”,同时去掉空值(如果之前留空处理了不存在的物料)。 但是注意:我们之前对表2中不存在的物料在D列留空,所以筛选时去掉空值即可看到所有有差异的相同物料(包括差异为0?不,我们只显示非0?不对,差异为0的也是相同物料,但无差异。用户可能只关心有差异的,所以我们可以筛选非0且非空,但0表示无差异,所以通常我们只关心非0的差异)。 因此,我们可以在D列筛选时,选择“数字筛选”->“不等于0”,这样0和空值都会被隐藏,只显示有差异的。 但是注意:空值不是0,所以不会显示。所以这样筛选后,我们只看到有差异的相同物料。 如果用户需要查看所有相同物料(包括无差异的),那么就不筛选。 根据用户问题,只需要对比差异,所以我们可以只列出有差异的相同物料。 因此,步骤: 1. 在表1中,用VLOOKUP匹配表2的需求数量。 2. 计算差异(表2需求数量-表1需求数量)。 3. 筛选差异列,选择“不等于0”,这样就会显示所有有差异的相同物料。 注意:如果表1中一个物料在表2中出现多次,VLOOKUP只会返回第一个匹配到的值。所以确保物料编码在两张表中都是唯一的。 如果物料编码不唯一,那么需要先汇总每个物料的需求数量(比如用SUMIF),然后再对比。 假设用户的两张表中,同一个物料可能出现多次,那么我们需要先按物料编码汇总需求数量,然后再进行对比。 因此,我们需要先确保每个物料的唯一性。可以在一个新表中,分别对两个表使用SUMIF汇总每个物料的总需求数量,然后再进行对比。 步骤: 1. 提取两张表的所有物料编码,合并去重,作为对比基准。 2. 分别计算每个物料在表1和表2中的总需求数量。 3. 将两个总需求数量放在一起,计算差异。 我们可以这样做: 在Sheet3中: A列:所有物料编码(从表1和表2的物料编码合并去重得到) B列:=SUMIF(Sheet1!A:A, A2, Sheet1!B:B) C列:=SUMIF(Sheet2!A:A, A2, Sheet2!B:B) D列:=C2-B2 然后筛选D列非0。 如果数据量很大,使用SUMIF可能会慢,可以考虑使用数据透视表汇总。 但根据用户问题,我们假设两张表中物料编码是唯一的,或者用户已经按物料编码汇总好了。 因此,我们回到最初的方法。 综上所述,根据用户的数据情况,我们提供两种方案: 方案A(适用于物料编码唯一): 在表1中匹配表2的需求数量,计算差异,并筛选非0差异。 方案B(适用于物料编码不唯一): 先汇总每个物料的总需求数量,再对比。 由于用户没有说明是否唯一,我们给出一个通用的方法,即先汇总再对比(方案B)。 具体操作(方案B): 步骤1:创建汇总表(在Sheet3) 在A列列出所有物料编码:将表1和表2的物料编码复制到一列,然后使用“删除重复项”功能去重。 步骤2:在Sheet3的B2写公式: =SUMIF(Sheet1!$A$2:$A$1000, A2, Sheet1!$B$2:$B$1000) 步骤3:在Sheet3的C2写公式: =SUMIF(Sheet2!$A$2:$A$1000, A2, Sheet2!$B$2:$B$1000) 步骤4:在Sheet3的D2写公式: =C2-B2 步骤5:筛选D列,选择“不等于0”,即可看到有差异的物料。 注意:如果某个物料在表1或表2中不存在,SUMIF会返回0,所以差异就是另一个表的值(或负值)。 这样,我们就得到了所有物料的差异情况,包括只在一个表中存在的物料。 但是用户要求的是“相同物料”的差异,所以我们可以筛选掉那些只在其中一个表中存在的物料(即B列和C列中有一个为0的)。或者用户可能也关心只在一个表中存在的物料,这取决于需求。 根据问题描述,用户要求“相同物料”,所以我们只关心两个表都存在的物料。因此,我们可以在Sheet3中增加一列: E列:=IF(AND(B2>0, C2>0), "相同物料", "仅存在一个表") 然后筛选E列为“相同物料”且D列不等于0的行。 这样,我们就得到了两个表都存在的物料且需求数量有差异的记录。 总结:我们推荐使用方案B,因为它更通用,且可以处理物料编码不唯一的情况,同时也能展示物料的存在性差异。 因此,详细步骤: 1. 新建一个工作表(Sheet3)。 2. 将表1(Sheet1)的物料编码列复制到Sheet3的A列,将表2(Sheet2)的物料编码列复制到Sheet3的A列已有数据的下方。 3. 选中Sheet3的A列,点击“数据”选项卡中的“删除重复项”,得到所有唯一的物料编码。 4. 在Sheet3的B2输入:=SUMIF(Sheet1!$A:$A, $A2, Sheet1!$B:$B) 并下拉填充。 5. 在Sheet3的C2输入:=SUMIF(Sheet2!$A:$A, $A2, Sheet2!$B:$B) 并下拉填充。 6. 在D2输入:=C2-B2 并下拉。 7. 在E2输入:=IF(AND(B2<>0, C2<>0), "相同物料", IF(B2=0, "仅表2有", "仅表1有")) 并下拉。 8. 现在,我们可以筛选E列为“相同物料”,然后筛选D列“不等于0”,这样就是相同物料但需求数量有差异的。 最后,可以将结果复制到新的地方或标记出来。 另外,我们可以使用条件格式将差异不为0的相同物料标记出来。 以上是使用Excel函数的方法。如果数据量很大,可以考虑使用数据透视表或Power Query,但函数方法对于一般用户更直接。 因此,我们给出方案B的步骤作为解答。 注意:如果用户使用的是Excel 365,还可以使用UNIQUE函数来获取唯一物料编码,如: =UNIQUE(Sheet1!A2:A100, Sheet2!A2:A100) 但需要先组合两个数组,可以使用VSTACK(365版本): =UNIQUE(VSTACK(Sheet1!A2:A100, Sheet2!A2:A100)) 这样一步得到唯一物料编码列表。 最后,生成相关问题: §§相关问题§§ 1. 如何用Excel对比两个表格中相同物料价格差异? 2. 如果两个表格的物料编码有重复,如何快速汇总每个物料的总数量? 3. 如何用条件格式在Excel中高亮显示两个表格的差异? 4. 如何用Excel数据透视表对比两个表格的数据? 5. 如何用Power Query对比两个表格并合并结果?</think>### Excel对比两张表相同物料需求数量差异的方法 在Excel中对比两张表相同物料的需求数量差异,可以通过以下步骤实现(假设两张表分别为**表1**和**表2**,均包含“物料编码”和“需求数量”列): --- ### 方法一:使用VLOOKUP函数(推荐) 1. **在表1旁新增辅助列** - 在表1的**C列**(假设表1的A列=物料编码,B列=需求数量)输入公式: ``` =IFERROR(VLOOKUP(A2, 表2!$A$2:$B$1000, 2, FALSE), "无匹配") ``` - `A2`:表1的物料编码 - `表2!$A$2:$B$1000`:表2的数据范围(需绝对引用) - `2`:返回表2需求数量列的值 - `"无匹配"`:未找到相同物料时显示提示 2. **计算差异** - 在表1的**D列**输入公式: ``` =IF(C2="无匹配", "仅表1存在", C2-B2) ``` - 结果正数:表2需求数量 > 表1 - 结果负数:表2需求数量 < 表1 - `"仅表1存在"`:该物料在表2中不存在 3. **筛选差异** - 选中D列 → **数据** → **筛选** → 按以下条件筛选: - `≠0`:仅显示数量差异 - `="仅表1存在"`:显示表2缺失的物料 --- ### 方法二:使用Power Query(适合大数据量) 1. **导入数据到Power Query** - 选中表1 → **数据** → **从表格/区域** → 创建表(勾选“表包含标题”) - 重复操作导入表2 2. **合并查询** - 在Power Query编辑器中打开表1 → **主页** → **合并查询** → 选择表2 - **匹配列**:两表的“物料编码”列 - **连接种类**:`左外部`(保留表1所有行) → 确定 3. **计算差异** - 展开合并列:点击新列旁的图标 → 仅勾选“需求数量” → 取消勾选“使用原始列名作为前缀” - 添加自定义列: ``` = [需求数量.表2] - [需求数量] ``` - 重命名新列为“差异” 4. **筛选导出** - 筛选“差异”列:`≠0` 或 `不为空` → **主页** → **关闭并上载** - 结果将输出到新工作表 --- ### 方法三:条件格式快速标识差异 1. **标记表2独有物料** - 在表2新增辅助列输入: ``` =IF(ISNA(VLOOKUP(A2, 表1!$A$2:$B$1000, 2, FALSE)), "仅表2存在", "") ``` 2. **高亮数量差异** - 选中表1的需求数量列(B列)→ **开始** → **条件格式** → **新建规则** - 选择规则类型:`使用公式确定格式` - 输入公式(假设当前行为第2行): ``` =AND(VLOOKUP(A2, 表2!$A:$B, 2, FALSE)<>B2, VLOOKUP(A2, 表2!$A:$B, 2, FALSE)<>"") ``` - 设置填充色(如红色)→ 确定 --- ### 注意事项 1. **数据规范性**:确保两表的物料编码格式一致(无空格/字符差异)。 2. **覆盖所有数据**:`VLOOKUP`范围需包含完整数据(如`$A$2:$B$1000`可改为`$A:$B`覆盖整列)。 3. **匹配唯一性**:若物料编码重复,需先**删除重复值**(数据 → 删除重复值)。 > **操作示意图** > | 物料编码 | 表1需求数量 | 表2需求数量 | 差异 | > |----------|-------------|-------------|------| > | A001 | 100 | 120 | 20 | > | B002 | 200 | 无匹配 | 仅表1存在 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlanChen

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值