表格显示名称,通过id查找名称

这是一个关于表格查询的代码实现,主要功能是根据用户选择的分组、名称、时间范围和通过性进行数据检索。首先检查是否选择了分组,如果没有则给出错误提示。接着构造查询参数,包括分组ID、名称、开始和结束时间等,并调用HTTP POST方法向服务器发送请求。收到响应后,处理数据并更新文档列表。此外,还定义了一个辅助方法`getObjDataById`用于通过数据对象ID获取详细信息。
  /**
   * 表格查询
   *
   * @public
   * @param {*} options
   * @memberof TableHandle
   */
  public queryMetaDataJobs(): void {
    console.log(this.treeRowData);
    if (!this.treeRowData.id) {
      this.$notify.error('请选择分组!');
      return;
    }
    const url = '/xxx/xxx/list';
    const { name, isPass } = this.search;
    const params: any = {
      groupId: this.treeRowData.id,
      name,
      startTime: this.search.range[0] ? moment(this.search.range[0]).format('YYYY-MM-DD 00:00:00') : '',
      endTime: this.search.range[1] ? moment(this.search.range[1]).format('YYYY-MM-DD 23:59:59') : '',
      isPass,
      pageNumber: this.pageNumber,
      pageSize: this.pageSize
    };
    this.http.post(url, params).then((res: any) => {
      if (res.statusCode == '0') {
        const arr: any = [];
        res.data.forEach((item: any) => {
          item.metaobjNames = [];
          item.metaobjs.forEach(async (id: string) => {
            const data = await this.getObjDataById(id);
            if (data.data) {
              item.metaobjNames.push(data.data.name);
            } else {
              item.metaobjNames = item.metaobjs;
            }
          });
          arr.push(item);
        });
        this.documentList = arr;
      }
    });
  }

  /**
 * 通过数据对象id查询数据对象
 *
 * @memberof CreateForm
 */
  getObjDataById(id: any): Promise<any> {
    const url = `/xxx/xxx/xxxx?Id=${id}`;
    return this.http.post(url);
  }
<think>好的,用户现在的问题是需要根据公司名称查找对应的客户ID,而客户ID在第一列。之前用户问的是使用VLOOKUP查找公司名称,现在反过来,需要根据公司名称找客户ID,这时候VLOOKUP可能不太适用,因为VLOOKUP只能从左到右查找,而客户ID在第一列,公司名称可能在后面的列里。 用户可能之前用过VLOOKUP,所以这次的问题可能还是想用类似的函数,但需要调整。这时候应该考虑使用INDEX和MATCH的组合,因为MATCH可以在任意列中查找公司名称的位置,然后INDEX可以返回同一行中第一列的客户ID。 需要确认用户的表格结构,比如公司名称在哪个列。假设客户ID在A列,公司名称在B列,那么MATCH会在B列中查找目标公司名称,然后INDEX返回A列对应行的值。 另外,用户可能不太清楚为什么VLOOKUP不能直接用,这时候需要解释一下VLOOKUP的限制,并推荐INDEX+MATCH的方法。同时,要提供具体的公式示例,比如=INDEX(A:A, MATCH("公司名称", B:B, 0)),并解释每个参数的作用。 还要考虑可能的错误情况,比如公司名称不存在,这时候MATCH会返回错误,需要用IFERROR来处理,给出提示如“未找到”。此外,数据范围可能需要绝对引用,方便用户拖动公式时范围不变。 用户可能有大量数据,所以需要提醒锁定查找范围,比如使用$B$1:$B$100而不是整列,以提高性能。同时,如果公司名称有重复,MATCH只会返回第一个匹配项,可能需要说明这一点,或者提供其他方法处理多个结果。 最后,扩展技巧部分可以包括多条件查找、模糊匹配,以及如何动态扩展数据范围,比如使用表格引用。相关问题可能涉及反向查找、处理重复值、错误处理、模糊匹配和动态范围。</think>要根据 **公司名称** 查找对应的 **客户ID**(假设客户ID在第一列),需使用 **`INDEX` + `MATCH`** 组合公式,因为 `VLOOKUP` 无法反向查找(即无法从右向左返回数据)。 --- ### 示例数据 | A列(客户ID) | B列(公司名称) | |---------------|------------------| | 001 | ABC公司 | | 002 | XYZ公司 | | 003 | DEF公司 | --- ### 基本公式 ```excel =INDEX(A:A, MATCH("ABC公司", B:B, 0)) ``` - **参数说明**: - `"ABC公司"`:要查找的公司名称(可替换为单元格引用,如 `E1`)。 - `B:B`:公司名称所在的列。 - `0`:要求精确匹配。 - `INDEX(A:A, ...)`:返回 A 列(客户ID)中与匹配行对应的值。 --- ### 动态公式(结合单元格引用) 若公司名称在 `E1` 单元格: ```excel =INDEX(A:A, MATCH(E1, B:B, 0)) ``` 拖动公式可批量查找其他公司对应的客户ID。 --- ### 错误处理 若公司名称不存在,公式会返回 `#N/A`。可用 `IFERROR` 包裹: ```excel =IFERROR(INDEX(A:A, MATCH(E1, B:B, 0)), "未找到") ``` --- ### 注意事项 1. **锁定数据范围**(提升性能): 避免使用整列引用(如 `A:A`),缩小范围(如 `$A$1:$A$100`): ```excel =INDEX($A$1:$A$100, MATCH(E1, $B$1:$B$100, 0)) ``` 2. **区分大小写**: `MATCH` 不区分大小写(如 "ABC公司" 和 "abc公司" 视为相同)。 3. **重复值处理**: 若公司名称重复,`MATCH` 仅返回第一个匹配项的行号。 --- ### 扩展技巧 1. **多条件查找**: 若需根据公司名称 + 地区联合查找,可使用数组公式(按 `Ctrl+Shift+Enter`): ```excel =INDEX(A:A, MATCH(1, (B:B="ABC公司")*(C:C="上海"), 0)) ``` 2. **模糊匹配**: 查找包含关键词的公司名称(如 "苹果"): ```excel =INDEX(A:A, MATCH("*苹果*", B:B, 0)) ``` 3. **动态扩展范围**(使用表格): 将数据转换为表格(快捷键 `Ctrl+T`),公式会自动扩展: ```excel =INDEX(Table1[客户ID], MATCH(E1, Table1[公司名称], 0)) ``` --- ### 示例结果 | 查找公司 | 公式结果(客户ID) | |------------|--------------------| | ABC公司 | 001 | | XYZ公司 | 002 | | 不存在的公司 | 未找到 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值