Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用通配符和多个条件查找匹配的公式

使用通配符和多个条件查找匹配的公式
EN

Stack Overflow用户
提问于 2020-06-08 14:09:20
回答 1查看 193关注 0票数 0

我正在尝试创建一个具有多个条件和通配符的公式,如果找到,将返回匹配的类别。我认为这将通过一个强大的索引匹配公式来完成,但我正在努力将所有标准纳入一个有效的公式中。我会用例子更好地解释...

我有两个工作表,“导入数据”和“发票编码”。公式将被输入到工作表“导入数据”中,在边上的任何列中,例如公式进入列AD。

这是“导入数据”表:

这是“发票编码”表(超过500行并且还在增长,所以这是一个小屏幕截图):

第一步是从"Import Sheet“中查找"ACCT”编号(列O),对照"Invoicing Coding“表单,它通常有多个匹配项。然后,第二步将检查"Import Data“表上相应的"INV”,并查看"Invoice Coding“表上的通配符发票是否匹配。返回的是“发票编码”表中的“类别”(D列)。

为了更好地解释,我将提供一个具体的示例:

在这一行中,我希望使用O列数据,它是数字50000。

在“发票编码”表上查找50000,它有很多结果。

然后在前一个屏幕截图上使用列D中的INV,这是...

查看它是否与上面“发票编码”页面截图的C列中列出的通配符部分匹配。

因此,在这个特定的例子中,来自“导入数据”表的ACCT和INV与“发票编码”表上的行178相匹配。公式的预期结果将是列D中的Category;Third Party。

以下是我到目前为止拥有的一个公式,它没有使用通配符合并部分发票匹配:

代码语言:javascript
运行
AI代码解释
复制
=INDEX('Invoice Coding'!A2:E514,MATCH('Import Data'!O2,'Invoice Coding'!A2:A514,0),4)

这从技术上返回一个Category,但是它没有使用INV #和带有通配符的部分INV,所以返回可能是不正确的。

我希望我的解释有道理。关于是否可以增强索引匹配公式以包含所有必需的条件查找,有什么建议吗?

顺便说一句,我会重复这个公式,稍微调整一下,也会从“发票编码”表的E栏中返回“子类别”。

提前感谢你们所有人!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-23 14:33:35

我要回答我自己的问题。我们通过VBA找到了一个适合我们的解决方案。最初,我在使用VBA时犹豫不决,因为我认为与公式相比,它的运行时间要长得多,但我们的解决方案比预期的要快,大约需要30秒来遍历60,000行。

因此,我们的VBA解决方案:

代码语言:javascript
运行
AI代码解释
复制
'***** Declare variables to be used *****
Dim ImportWS As Worksheet, ilastrow As Long, ilooper As Long, FindArray As Variant, CodingWS As Worksheet, clastrow As Long, CodeArray As Variant, clooper As Long, acct As Long, Inv As String, matchfound As Boolean

Application.ScreenUpdating = False
Application.DisplayAlerts = False
    
    'Import Data sheet prep and storing in FindArray
    Set ImportWS = ThisWorkbook.Sheets("Import Data")
    ilastrow = ImportWS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    ImportWS.Range("AC1") = "Category"
    ImportWS.Range("AD1") = "Sub Category"
    ImportWS.Range("AE1") = "Billing Name"
    ImportWS.Range("AC2:AE" & ilastrow).ClearContents
    FindArray = ImportWS.Range("AC1:AE" & ilastrow)

    'Storing Coding sheet data into array
    Set CodingWS = ThisWorkbook.Sheets("Invoice Coding")
    clastrow = CodingWS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    CodeArray = CodingWS.Range("A1:F" & clastrow)
    
    With ImportWS
        
        'Looping through all rows on Import Data sheet...
        For ilooper = 2 To ilastrow
            
            'Storing GL Acct# and Invoice# for comparison against Coding sheet
            acct = Val(.Range("O" & ilooper))
            Inv = .Range("D" & ilooper)
            
            'matchfound is a boolean that is reset on each row.
            'if a match is found against the Coding sheet it is flipped to true...
            'we stop looking in the following loop...
            'and we commit the cat and subcat to the FindArray variant.
            matchfound = False
            
            'This is our looper for going through the coding table in the following loop.
            clooper = 2
            
            'While we haven't found a match for GL# and Inv...
            'and we haven't reached the end of the table...
            While matchfound = False And clooper <= clastrow
    
                'If acct# matches coding table we perform another check...
                If Val(CodeArray(clooper, 1)) = acct Then
                        
                    '...for partial match on Inv - which accounts for wildcard placement as on the table...

                    If Inv Like CodeArray(clooper, 3) Then
                       'If match is found, matchfound is true, which will stop the next iteration of the loop
                        matchfound = True
                        'and we store the cat and subcat in our FindArray
                        FindArray(ilooper, 1) = CodeArray(clooper, 4)
                        FindArray(ilooper, 2) = CodeArray(clooper, 5)
                        FindArray(ilooper, 3) = CodeArray(clooper, 6)
                    End If
                End If
                
                'If no match, check the next row on the Coding table.
                clooper = clooper + 1
    
            Wend
            
            
        'After we found a match or reached the end of the coding table...
        '...we move on to the next row on the Import Data sheet.
        Next ilooper
        
        'After looping through all rows on the Import Data sheet we commit what we found to columns AC, AD, AE.
        ImportWS.Range("AC1:AE" & ilastrow).Value = FindArray
    
    End With
    
Application.ScreenUpdating = True
Application.DisplayAlerts = True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62263986

复制
相关文章
[Tensorflow] 使用SSD-MobileNet训练模型
因为Android Demo里的模型是已经训练好的,模型保存的label都是固定的,所以我们在使用的时候会发现还有很多东西它识别不出来。那么我们就需要用它来训练我们自己的数据。下面就是使用SSD-MobileNet训练模型的方法。
wOw
2018/09/18
13.9K3
使用Tensorflow对象检测在安卓手机上“寻找”皮卡丘
在TensorFlow的许多功能和工具中,隐藏着一个名为TensorFlow对象探测API(TensorFlow Object Detection API)的组件。正如它的名字所表达的,这个库的目的是训练一个神经网络,它能够识别一个框架中的物体。这个库的用例和可能性几乎是无限的。它可以通过训练来检测一张图像上的猫、汽车、浣熊等等对象。本文将用它来实现皮卡丘的检测。 TensorFlow对象检测API:https://github.com/tensorflow/models/tree/master/resea
AiTechYun
2018/03/06
2.1K0
使用Tensorflow对象检测在安卓手机上“寻找”皮卡丘
基于自制数据集的MobileNet-SSD模型训练
“本文主要内容:基于自制的仿VOC数据集,利用caffe框架下的MobileNet-SSD模型训练。” 本文的base是https://github.com/chuanqi305/MobileNet-SSD,这个project又是基于https://github.com/weiliu89/caffe/tree/ssd,因此项目编译和数据库生成大多同 weiliu89的base。以下从环境搭建、数据集制作、模型训练、模型测试四个环节介绍整个过程。 01 — 环境搭建 weiliu89的caffe框架下SSD环
企鹅号小编
2018/01/15
6.5K8
基于自制数据集的MobileNet-SSD模型训练
构建对象检测模型
我喜欢深度学习。坦率地说,这是一个有大量技术和框架可供倾注和学习的广阔领域。当我看到现实世界中的应用程序,如面部识别和板球跟踪等时,建立深度学习和计算机视觉模型的真正兴奋就来了。
磐创AI
2020/07/24
1.3K0
构建对象检测模型
使用Tensorflow Object Detection API实现对象检测
Tensorflow Object Detection API自从发布以来,其提供预训练模型也是不断更新发布,功能越来越强大,对常见的物体几乎都可以做到实时准确的检测,对应用场景相对简单的视频分析与对象检测提供了极大的方便与更多的技术方案选择。tensorflow object detection提供的预训练模型都是基于以下三个数据集训练生成,它们是:
OpenCV学堂
2018/07/26
9640
使用Tensorflow Object Detection API实现对象检测
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
是否能够更快地训练和提供对象检测模型?我们已经听到了这种的反馈,在今天我们很高兴地宣布支持训练Cloud TPU上的对象检测模型,模型量化以及并添加了包括RetinaNet和MobileNet改编的RetinaNet在内的新模型。本文将引导你使用迁移学习在Cloud TPU上训练量化的宠物品种检测器。
AiTechYun
2018/07/27
4.1K0
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
TensorFlow 模型优化工具包:模型大小减半,精度几乎不变!
我们非常高兴能够将训练后的 float16 quantization 作为模型优化工具包(Model Optimization Toolkit)的一部分。这套工具包括了:
AI研习社
2019/08/15
1.7K0
TensorFlow 模型优化工具包:模型大小减半,精度几乎不变!
Python 数据科学入门教程:TensorFlow 目标检测
你好,欢迎阅读 TensorFlow 目标检测 API 迷你系列。 这个 API 可以用于检测图像和/或视频中的对象,带有使用边界框,使用可用的一些预先训练好的模型,或者你自己可以训练的模型(API 也变得更容易)。
ApacheCN_飞龙
2022/12/01
1.5K0
Python 数据科学入门教程:TensorFlow 目标检测
tensorflow Object Detection API使用预训练模型mask r-cnn实现对象检测
Mask R-CNN是何凯明大神在2017年整出来的新网络模型,在原有的R-CNN基础上实现了区域ROI的像素级别分割。关于Mask R-CNN模型本身的介绍与解释网络上面已经是铺天盖地了,论文也是到处可以看到。这里主要想介绍一下在tensorflow中如何使用预训练的Mask R-CNN模型实现对象检测与像素级别的分割。tensorflow框架有个扩展模块叫做models里面包含了很多预训练的网络模型,提供给tensorflow开发者直接使用或者迁移学习使用,首先需要下载Mask R-CNN网络模型,这个在tensorflow的models的github上面有详细的解释与model zoo的页面介绍, tensorflow models的github主页地址如下: https://github.com/tensorflow/models
OpenCV学堂
2018/09/29
5.7K2
tensorflow Object Detection API使用预训练模型mask r-cnn实现对象检测
X射线图像中的目标检测
每天有数百万人乘坐地铁、民航飞机等公共交通工具,因此行李的安全检测将保护公共场所免受恐怖主义等影响,在安全防范中扮演着重要角色。但随着城市人口的增长,使用公共交通工具的人数逐渐增多,在获得便利的同时带来很大的不安全性,因此设计一种可以帮助加快安全检查过程并提高其效率的系统非常重要。卷积神经网络等深度学习算法不断发展,也在各种不同领域(例如机器翻译和图像处理)发挥了很大作用,而目标检测作为一项基本的计算机视觉问题,能为图像和视频理解提供有价值的信息,并与图像分类、机器人技术、人脸识别和自动驾驶等相关。在本项目中,我们将一起探索几个基于深度学习的目标检测模型,以对X射线图像中的违禁物体进行定位和分类为基础,并比较这几个模型在不同指标上的表现。
小白学视觉
2022/02/11
1.6K0
X射线图像中的目标检测
系列 | OpenVINO视觉加速库使用二
OpenVINO中模型优化器(Model Optimizer)支持tensorflow/Caffe模型转换为OpenVINO的中间层表示IR(intermediate representation),从而实现对模型的压缩与优化,方便推断引擎更快的加载与执行这些模型。以tensorflow对象检测框架支持的SSD MobileNet v2版本的模型为例,实现从tensorflow的pb文件到IR格式的bin与xml文件生成。全部的过程可以分为三个部分,下面一一解析!
OpenCV学堂
2019/04/29
3.5K1
系列 | OpenVINO视觉加速库使用二
干货 | tensorflow模型导出与OpenCV DNN中使用
Deep Neural Network - DNN 是OpenCV中的深度神经网络模块,支持基于深度学习模块前馈网络运行、实现图像与视频场景中的
OpenCV学堂
2019/04/29
5K0
干货 | tensorflow模型导出与OpenCV DNN中使用
TensorFlow 智能移动项目:1~5
本章介绍如何设置开发环境,以使用 TensorFlow 构建所有 iOS 或 Android 应用,本书其余部分对此进行了讨论。 我们不会详细讨论可用于开发的所有受支持的 TensorFlow 版本,OS 版本,Xcode 和 Android Studio 版本,因为可以在 TensorFlow 网站或通过 Google。 相反,我们将在本章中简要讨论示例工作环境,以便我们能够快速了解​​可使用该环境构建的所有出色应用。
ApacheCN_飞龙
2023/04/24
4.6K0
TensorFlow 目标检测模型转换为 OpenCV DNN 可调用格式
在 OpenCV4.X 版本(OpenCV3.4.1之后版本) 可以采用 cv2.dnn.readNetFromTensorflow(pbmodel, pbtxt) 函数直接调用 TensorFlow 训练的目标检测模型.
AIHGF
2019/05/13
2.5K0
TensorFlow 目标检测模型转换为 OpenCV DNN 可调用格式
Tensorflow Object Detection API 终于支持tensorflow1.x与tensorflow2.x了
基于tensorflow框架构建的快速对象检测模型构建、训练、部署框架,是针对计算机视觉领域对象检测任务的深度学习框架。之前tensorflow2.x一直不支持该框架,最近Tensorflow Object Detection API框架最近更新了,同时支持tensorflow1.x与tensorflow2.x。其中model zoo方面,tensorflow1.x基于COCO数据集预训练支持对象检测模型包括:
OpenCV学堂
2020/09/08
1.2K0
Tensorflow Object Detection API 终于支持tensorflow1.x与tensorflow2.x了
浣熊检测器实例, 如何用TensorFlow的Object Detector API来训练你的物体检测器
这篇文章是“用Tensorflow和OpenCV构建实时对象识别应用”的后续文章。具体来说,我在自己收集和标记的数据集上训练了我的浣熊检测器。完整的数据集可以在我的Github repo上看到。 看一
AiTechYun
2018/03/02
1.7K0
浣熊检测器实例, 如何用TensorFlow的Object Detector API来训练你的物体检测器
行人检测--OpenCV与TensorFlow SSD对比
OpenCV行人检测我们使用HOG特征提取+SVM训练,使用默认API检测,详细了解可参考:https://zhuanlan.zhihu.com/p/75705284
Color Space
2020/01/13
3.3K0
行人检测--OpenCV与TensorFlow SSD对比
毫秒级检测!你见过带GPU的树莓派吗?
树莓派3B+英特尔神经计算棒进行高速目标检测 转载请注明作者梦里茶 代码: 训练数据预处理: https://gist.github.com/ahangchen/ae1b7562c1f93fda
梦里茶
2018/03/30
9K0
毫秒级检测!你见过带GPU加速的树莓派吗?
正文共13130个字,5张图,预计阅读时间33分钟。 树莓派3B+英特尔神经计算棒进行高速目标检测 NCS Pi 代码: 训练数据预处理: https://gist.github.com/ahangc
用户1332428
2018/06/07
2.5K0
视频识别训练2.3(实现TensorFlow视频识别)
大家好,又见面了,我是你们的朋友全栈君。 盯住梅西:TensorFlow目标检测实战 https://baijiahao.baidu.com/s?id=1581115075233058548&wfr=
全栈程序员站长
2022/09/02
1.1K0

相似问题

使用SSD Mobilenet (Tensorflow API)实现1080p中的对象检测

12

从训练Tensorflow对象检测API开始的低损失

111

使用Tensorflow对象检测API时,验证损失较高(使用训练数据集),而训练损失较低

113

如何使用Tensorflow对象检测API提高ssd mobilenet v2 coco的准确性

323

训练SSD-MOBILENET V1和损失不减酶

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档