精华内容
下载资源
问答
  • Excel常用公式-关联匹配

    千次阅读 2018-05-08 12:16:50
    语法:=VLOOKUP(要查找的值、要在其中查找值的区域、区域中包含返回值的列号、精确匹配或近似匹配 – 指定为 0/FALSE 或 1/TRUE)。 2、HLOOKUP 功能:搜索表的顶行或值的数组中的值,并在表格或数组中指定的行的...

    1、VLOOKUP
    功能:用于查找首列满足条件的元素。
    语法:=VLOOKUP(要查找的值、要在其中查找值的区域、区域中包含返回值的列号、精确匹配或近似匹配 – 指定为 0/FALSE 或 1/TRUE)。

    2、HLOOKUP
    功能:搜索表的顶行或值的数组中的值,并在表格或数组中指定的行的同一列中返回一个值。
    语法:= Hlookup(lookup_value、table_array、row_index_num)、[range_lookup])
    HLOOKUP 函数的语法包含以下参数:

    • Lookup_value必填。要在表格的第一行中找到的值。Lookup_value 可以是值、 引用或文本字符串。
    • Table_array必填。在其中搜索数据的信息的表。使用对区域或区域名称的引用。
      (1) Table_array 的第一行中的值可以是文本、 数字或逻辑值。
      (2) 如果 range_lookup 为 TRUE,则必须按升序排列放 table_array 的第一行中的值:…-2,-1,0,1,2,…,A-Z、 假、 真;否则,函数 HLOOKUP 可能不提供正确的值。如果 range_lookup 为 FALSE,则不需要进行排序 table_array。
      (3) 大写和小写文本是等效的。
      (4) 对按递增顺序,从左到右的值进行排序。
    • Row_index_num必填。在 table_array 将返回匹配的值的行号。1 row_index_num 返回第一个行的值在 table_array,2 row_index_num table_array,等返回第二行的值。如果 row_index_num 等于或大于 1,hlookup 函数返回 #VALUE !错误值,则为如果在 table_array 上的行数大于 row_index_num,hlookup 函数返回 #REF !错误值。
    • Range_lookup可选。逻辑值,指定是否希望 hlookup 函数来查找完全匹配或模糊匹配。如果为 TRUE 或省略,则返回近似匹配。换句话说,如果找不到完全匹配项,则返回小于 lookup_value 的下一步最大值。如果为 FALSE,hlookup 函数会查找完全匹配。如果未找到,则返回错误值 # n/A。

    3、INDEX
    功能:INDEX 函数返回表格或区域中的值或值的引用。
    语法:= INDEX(array, row_num, [column_num])

    • Array必需。单元格区域或数组常量。
    • 如果数组只包含一行或一列,则相对应的参数 Row_num 或 Column_num 为可选参数。
    • 如果数组有多行和多列,但只使用 Row_num 或 Column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。
    • Row_num必需。选择数组中的某行,函数从该行返回数值。如果省略 Row_num,则必须有 Column_num。
    • Column_num可选。选择数组中的某列,函数从该列返回数值。如果省略 Column_num,则必须有Row_num。

    4、MATCH
    功能:用于返回指定内容在指定区域(某行或者某列)的位置。
    语法:=MATCH(lookup_value,
    lookup_array, [match_type])

    • lookup_value 必需。要在 lookup_array 中匹配的值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
    • lookup_value 参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。
    • lookup_array 必需。要搜索的单元格区域。
    • match_type 可选。数字 -1、0 或 1。match_type 参数指定 Excel 如何将 lookup_value 与 lookup_array 中的值匹配。此参数的默认值为 1。
      说明:匹配类型有三个值,0表示等于,1表示小于,-1表示大于。

    5、RANK
    功能:返回一列数字的数字排位。数字的排位是其相对于列表中其他值的大小。
    语法:RANK(number,ref,[order])

    • Number必需。 要找到其排位的数字。
    • Ref必需。 数字列表的数组,对数字列表的引用。 Ref 中的非数字值会被忽略。
    • Order可选。一个指定数字排位方式的数字。
      如果 order 为 0(零)或省略,Microsoft Excel 对数字的排位是基于 ref 为按照降序排列的列表。
      如果 order 不为零,Microsoft Excel 对数字的排位是基于 ref 为按照升序排列的列表。
    展开全文
  • 正则表达式匹配公式为:^((?!XXX).)*$, XXX为字符串。

    正则表达式匹配公式为:^((?!XXX).)*$, XXX为字符串。

    展开全文
  • 1.需要匹配并替换公式字符串中的数字等值; 2.匹配数字时,例如匹配f1时,不会影响f11; 3.正则表达式中使用变量; 案例: var a = 'f11'; 'f1+f1+f2+f11+f11'.replace(new RegExp(`\\b${a}(?=[^\d])|${a}$\\b`,'ig'...

    场景:
    1.需要匹配并替换公式字符串中的数字等值;
    2.匹配数字时,例如匹配f1时,不会影响f11;
    3.正则表达式中使用变量;

    案例:

    var a = 'f1';
    'f1+f1+f2+f11+f11'.replace(new RegExp(`\\b${a}(?=[^\d])\\b|${a}$`,'ig'),0)
    

    输出结果为

    "f1+f1+f2+0+0"
    

    解释:
    1.正则中的变量用法为 ‘${a}’;
    2.\\b表示边界;
    3.正前瞻 (?=[^\d]),匹配后面的不能是数字
    4.以变量${a}结尾,匹配最后面的数字;

    展开全文
  • 我们要查找S字符串串中是否包含P字符串,将P串称之为模式匹配串(以下简称模式串)。朴素模式串匹配算法我们先用一个动图来看不用KMP匹配的 朴素模式串匹配算法:浅显易懂吧!但是呢,朴素的模式串匹配算法是有效率...

    KMP算法可以说是一个很经典的模式匹配算法了,它一种改进的字符串匹配算法,但很多人就是不理解,甚至多看几次之后也没有理解透彻。

    我们要查找S字符串串中是否包含P字符串,将P串称之为模式匹配串(以下简称模式串)。

    朴素模式串匹配算法

    我们先用一个动图来看不用KMP匹配的 朴素模式串匹配算法:

    aa0d4d4172cc680f68413db8c24f26e5.gif

    浅显易懂吧!但是呢,朴素的模式串匹配算法是有效率问题的!比如像下面这种:

    c8787bf020c29a01f6166375b643701a.png

    在匹配到第5个字符时,发生了P串和S串不匹配的情形,然后按照朴素的算法,需要回溯 i 指针到 1 位置,回溯 j 指针到 0 位置,然后我们依次移动P串进行匹配计算:

    87accb4c3803fd02c5abb1de61db53c7.gif

    在i = 3时,此时后面就有S[3] = P[0], S[4] = P[1], S[5] = P[2]:

    7f187e73b918293db5596433852195af.png

    然后S[6] != P[3]:

    058b3a21a8de2e2caf46a53fb01891e0.png

    才发现又是不匹配的,其中我们可以用肉眼观察到,当S[1]和P[0]发生不匹配时,P串依次的从S串第1个位置,第2个位置进行比较,只有到S串第3个位置字符是A时才和P串的第0个字符匹配,而且后面的两个字符也能够匹配,但是,S串第5个字符是不匹配的。

    假如我们是通过肉眼判断的话,当

    3866216e5a82ab5b56117573686a4e82.png

    这时不匹配时,我们应该直接移动 j 到

    b33bae8ec92f87335a2630c26a706c7a.png

    进行匹配判断,因此,朴素的模式匹配是有一部分匹配判断是多余的,我们要想办法把它优化,在S[5] != P[5] 时,直接进行判断 S[5] 是否等于 P[2]。这是因为P[0] == P[3], P[1] == P[4];P串前后有相同的子串,可以看下图知道:

    a0000978a78d95d56b72864e708367d2.png

    由于S[3] = P[3], S[4] = P[4],而 P串前后有相同的子串:P[0] == P[3], P[1] == P[4],因此,我们可以直接进行判断S[5] 是否 等于 P[2]。也就是说当S[i] 和 P[j] 不匹配时,我们可以决定 j 的下一个位置是什么,从而使 i 指针不产生回溯。

    推广到一般情况,我们可以用数学来证明这个事情:

    c4080eb8f1b3df7e43e644ec586dc935.png

    这就有了KMP算法,我们假设S串下标是i,P串下标是 j。当P串中存在重合的子串时,我们需要分析出j指针指向的下一个位置,为了记录所有 j 取值的情况,用next数组来记录每一个P串的字符不匹配时需要将 j 指针移动到的位置下标。

    KMP算法核心

    核心思想:模式串中有重合的子串,那么当模式串p[j]匹配失败时,要移动到下标为k的位置进行匹配,k需要满足:0 ~ k 之间的 k+1 个字符与 j-1-k ~ j-1 之间的 k+1 个字符相同。next数组用于存放匹配失败时,next[j]代表需要进行匹配下一个字符的位置p[next[j]]。

    1cb6f2f8487abf4a698b839bad0bea5c.png

    可以用数学语言表述为:

    模式串p中有n个字符,其中

    d885d0355502b9292dc1046f11b3d70d.png

    如果存在

    fce0546c3f1f4e18e3e27b01ed1bfa8b.png

    使得

    9885899ef2602fed65902958f46e59b1.png

    那么令

    55ddfffcbc64155d969902bd77fb5f76.png

    否则(p中没有字符相同),令

    5e499d9c9ce3a53b75ca60eb04dd6785.png

    说明:

    • 当 k = 0 时,表示模式串p中前后只有一个字符能够重合,此时要从p[0](从头开始)匹配;
    • 当 k = -1 时,表示模式串中没有可以前后重合的部分子串,此时需要将原始串的指针下标(i)后移。

    记住:k = next[j]; 当 s[i] != p[j]时,需要将j指针移动到p串的k下标位置,那么next[j]就用来存储这个k。

    具体解释:

    • 第一种情况:j == 0时,s[i]和p[j]不匹配,那j指针不可能再向左移动了,此时应该要i指针向后移动。这种情况,记next[j] = -1;
    4b17959ca79f099f2803118da8c99f36.png
    • 第二种情况:j == 1时, s[i]和p[j]不匹配,那j指针显然是要移动到0位置的。这种情况,记next[j] = 0;
    c152932be4aaca14c73ee7397896a99d.png
    • 第三种情况:p[j] = p[k] 时,有 next[j+1] = next[j] + 1;

    证明:

    因为p[j]之前有 p[j-k ~ j-1] = p[0 ~ k-1]; 所以 next[j] = k;

    那此时有 p[j] = p[k];可以得到 p[j-k ~ j-1] + p[j] == p[0 ~ k-1] + p[k];

    即:p[j-k ~ j] == p[0 ~ k];

    那么 next[j+1] = k + 1 = next[j] + 1;

    0a29067e6991cf0dae004c51924dc165.png
    • 第四种情况:p[j] != p[k] 时,此时应该是 k = next[k];
    400c3dfb1fb1cd17c958778707ef60e9.png

    代码中为了保证循环依次计算j之前的重合子串,用j+1表示当前匹配不成功的字符位置,则计算next数组的算法如下:

    void getNext(char *p, int next[]){    int j = 0, k = -1, len = strlen(p);    if (len == 0)    return;    next[0] = -1;    while (j < len-1)    {        if (k == -1 || p[j] == p[k])            next[++j] = ++k; //next[j+1]记录p[j+1]匹配失败时需要跳转的位置        else            k = next[k];    }}

    由此可以写出KMP算法:

    int KMP(char s[], char p[]){    int[] next = getNext(p);    int i = 0, j = 0;    while (s[i] && p[j])    {        if (j == -1 || s[i] == p[j])            i++, j++;        else        j = next[j]; // j回到指定位置    }    if (p[j])        return -1;    return i - j;}

    改进的KMP算法

    回顾第三种情况:p[j] = p[k] 时,有 next[j+1] = next[j] + 1;

    6497c8094f47ca9db6214d2ae6f8888e.png

    当s[i] != p[j]时,需要将 j 移动到 next[j],然而由于 p[j] == p[next[j]],导致移动j之后 s[i] 和 p[next[j]]仍然不匹配,此时需要继续将j移动到next[next[j]]进行比较;

    显然,当p[j] 与 s[i]不匹配时,若p[j] == p[next[j]],就可以跳过j移动到next[j]这一步,直接进行移动到下一步。

    因此,修正后的nextval数组如下:

    9185054e09d81f7dfdf7cf1da5fbc0ea.png

    改进思想:

    在保证

    p[i] = p[j - k + i],(i = 0, 1, ..., k)

    后,再继续检查 p[j] 是否与 p[k] 相等?(此时原本是令 next[j] = k)

    因为此时 k 记录的是 p[j] 发生不匹配时,需要直接跳到下次比较的位置;

    所以:

    • 如果 p[k] = p[j] ,则同样发生不匹配,这时应该令 next[j] = next[k](因为 p[k] 与 p[j] 相同,则当前字符 p[j] 不匹配时,p[k]同样也不匹配,next[k]记录的是 p[k] 不匹配时需要跳转的位置,因此 p[j] 不匹配应该直接跳转到 next[k] 位置进行比较);
    • 如果 p[k] != p[j],那么当 p[j] 不匹配时才应该跳转到 p[k] 再次进行匹配,此时应令 next[j] = k。

    改进算法如下:

    void getNextval(char p[], int nextval[]){    int j = 0, k = -1, len = strlen(p);    if (len == 0)        return;    nextval[j] = k;    while (j < len-1)    {        if (k == -1 || p[j] == p[k])        {            ++j, ++k;            if(p[j] != p[k])                nextval[j] = k;            else            nextval[j] = nextval[k];        }        else            k = nextval[k];    }}

    kmp匹配的算法代码如下:

    /*** kmp模式匹配子串* 参数:* *str - 源串* *substr - 目标串*/int kmp(char *str, char *substr){    int i=0, j=0, slen = strlen(str), plen = strlen(substr);    int *nextval = (int *) calloc(plen, sizeof(int));    getNextval(substr, nextval);    while(i < slen && j < plen)    {        if( j == -1 || str[i] == substr[j])            i++, j++;        else            j = nextval[j];    }    if(j == plen)        return i - j;    else        return 0;}

    如果觉得这篇文章对你有帮助,就帮我点赞并转发吧!我会持续分享IT、科技、技术方面的知识、经验,如果你喜欢的话,可以加个关注收藏一下吧!@IT研究僧大师兄

    展开全文
  • 某公司部分员工薪资记录如图所示,要根据图中的员工编号从源数据表中提取出对应的员工姓名和打卡时间,可在J2和K2单元格中分别输入以下公式并向下复制:=VLOOKUP(I2,A:F,3,0)=VLOOKUP(I2,A:F,6,0)得到的结果显示如图...
  • lucene打分公式

    2017-02-27 18:04:46
    lucene利用余弦相似度进行计算,并进行了改进 coord(q,d):文档d匹配q的词越多,此值越大,在查询的...tf(tin d):和词频相关,t出现在d中的词数,tf(t in q)是1,因为如果一个查询q包含两个相同的t,在公式中会计算
  • 雷达线性调频下的匹配滤波以及脉冲压缩作用的仿真分析,里面包含原理讲解,公式推导,matlab仿真及分析
  • 蛋白质序列中常有重复的功能域(domain)或模体(motif)拷贝,由此衍生出一个抽象的序列多重匹配的问题,即如何从一个序列中找出另一个序列的某部分(如功能域或模体)的多个无交叠(non-overlapping)拷贝。...
  • 模式是指在字符串中寻找特定序列的字符或者说是一个 匹配(或不匹配)某字符串的模板,模式由反斜线包含。而一个** 正则表达式**,就是 用某种模式去匹配一类字符串的一个公式。 要进行复杂的模式,就需要借助于元...
  • 大家好,今天和大家分享一个典型的需求的解决方法,即使用关键词在一列种查找,返回与包含关键词的所有数据。今天的文章,给大家介绍使用公式达到上述效果。公式首先给出通用公式:=IF(搜索词="","",INDEX(元源数据...
  • 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。题目描述请实现一个函数用来匹配...
  • 最大匹配的Hopcroft-Karp算法

    千次阅读 2013-06-13 15:33:24
    郁闷,csdn如何插公式? 独立集:设 I 是 G 的一个点子集,若 I 中任意两个顶点不相邻,则称 I是 G 的一个独立集。最大独立集,指点数最多的独立集。 根据定理,易知独立集与点覆盖互补。 算法分为若干...
  • Excel 公式(细节若干)

    2015-01-05 09:25:00
    1.如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数。 2.VLOOKUP的第一个参数允许使用通配符“*”来表示包含的意思,把*放在字符的两边,即"*" & 字符 & "*"。 3....
  • 在速度重归一化组(vNRQCD)形式主义中,我们表明,可以通过利用包含Wilson线的胶子和夸克构造块,将涉及与重势夸克相互作用的软场的算符以明显规范的不变形式放置,类似于 软共线有效理论。 这导致了几种简化,...
  • 3.9.5 使用包含相对引用的命名公式  3.10 使用名称的高级技术 3.10.1 使用INDIRECT函数处理命名范围 3.10.2 使用INDIRECT函数创建带固定地址的命名范围 3.10.3 在命名公式中使用数组 3.10.4 创建一个动态的...
  • 3.9.5 使用包含相对引用的命名公式  3.10 使用名称的高级技术 3.10.1 使用INDIRECT函数处理命名范围 3.10.2 使用INDIRECT函数创建带固定地址的命名范围 3.10.3 在命名公式中使用数组 3.10.4 创建一个动态的...
  • nth-child 的值可以是包含 n 的线性公式,也可以是 odd 和 even 表示奇数行和偶数行. 然而素数本身是没有规律的, 请问怎么实现素数行和合数行分别设置不同的背景色? 现在假设我们已知有不大于 N 个元素需要匹配,求...
  • 1.8.1 括号不匹配 37 1.8.2 单元格被#符号填满 37 1.8.3 空白但非空的单元格 37 1.8.4 显示值与实际值 38 1.8.5 返回错误值 39 1.8.6 循环引用 41 1.9 公式使用技巧 42 1.9.1 在多个单元格中输入同一个公式 ...
  • 1: 电容C的公式:c=εS/4πkd 。 其中,ε是一个常数,S为电容极板的正对面积,d为电容极板的距离,k则是静电力常量。常见的平行板电容器,电容为C=εS/d(ε为极板间介质的介电常数,S为极板面积,d为极板间的距离...
  • 如下图所示,要统计A1单元格内包含几个“花”字?公式一:=LEN(A1)- LEN(SUBSTITUTE(A1,"花",))公式难度:☆公式中有两个函数,分别是LEN和SUBSTITUTE。LEN函数用于计算字符长度。SUBSTITUTE...
  • =VLOOKUP($A$8,...采用 INDIRECT 函数,用字符串拼接把动态生成的表名称包含起来,可以从多个表中提取数据 3)A2到D70是在目标表中的搜索范围, 4) 4是取匹配数据行的第4个数据。 5)0是精确匹配 【提出...
  • 您可以删除与您的Word版本匹配的Word文档以外的任何文件。 您还可以将此文档设置为Word中的模板,从而可以从使用此模板的任何Word文档中访问宏。 Mac的安装 注意:Mac版本仍在开发中,可能需要一些帮助。 内联方程...
  • 小伙伴们好啊,今天老祝和大家来说说VLOOKUP的那些事儿,深入了解一下VLOOKUP函数的...第二参数是需要查询的单元格区域,这个区域中的首列必须要包含查询值,否则公式将返回错误值。如果查询区域中包含多个符合条件...
  • 题目大意:给出一个n*m的棋盘,有t个点是禁止放棋子的,现在按照...包含点数最多的一个就是图的最大独立集 公式: 顶点数-最大匹配数 这样一来,因为马走日的规则也满足奇偶拆点的规则,所以在这个题目中我们可...
  • 稀疏网格插值的插值问题是一个最优恢复问题(即选择点,使光滑的多变量函数能够与合适的插值公式匹配)。根据插值函数的特点(平滑度、周期性),存在基于稀疏网格的各种插值技术。它们都采用了smolyak的结构,这...
  • Excel 技术篇-跨页签统计某一区域下符合条件的值的数量方法,COUNTIF函数、数量统计公式的用法实例演示。 计算全部人数方法: Sheet2 代表在名为它的页签取数, A:A 代表整个的范围是 A 列, * 号为通配符,代表匹配...
  • 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

匹配包含公式