EXCEL中怎么判断一个数是不是存在在一列数中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL中怎么判断一个数是不是存在在一列数中相关的知识,希望对你有一定的参考价值。

EXCEL中判断一个数是否存在在一列数中,可使用COUNTIF函数实现,如果存在目标数值,函数返回大于0的数字,若不存在则返回0。

方法步骤如下:

1、打开需要操作的EXCEL表格,在空白单元格输入公式=COUNTIF(A:A,2)。【其中A:A表示需要判断的数据在A列中,2则表示需要判断的数值,如果A列中存在2,则函数结果大于0否则为0】

2、回车可发现结果为1,则A列中存在数值2,同理输入公式=COUNTIF(A:A,3),并回车可得数字3的相关结果。

3、结果为0可发现A列中不存在数字3,综上已成功判断出一个数字是否存在A列中,2和3可根据实际随意修改。

参考技术A

1、打开excel选择一列我们输入一些数值,里面包含空的单元格,然后选择另外的一个单元格

2、在选择的单元格内我们输入“=COUNTBLANK()”函数

3、输入好函数之后我们再在函数内输入函数的参数

4、输入好参数按下回车键就可以在EXCEL中怎么判断一个数是否存在在一列数中了。

参考技术B 可以利用countif函数,Vlookup函数等实现
以前者为例
=countif(A:A,B1)
可以判断B1中的数是否存在A列中
结果为0不存在,大于0存在

BZOJ3289: Mato的文件管理

【传送门:BZOJ3289


简要题意:

  给出n个数,有m个询问,每个询问输入l,r,求出l到r中的所有数通过与相邻数交换变为上升序列的交换次数


题解:

  一开始想用在线算法做

  想不出来就用离线了

  就想到用莫队

  然后对于操作的继承,发现:

  ①在一列数的后面添加一个数,逆序对数会增加数列中比它大的数的个数。

 

  ②在一列数的后面删除一个数,逆序对数会减少数列中比它大的数的个数。

 

  ③在一列数的前面添加一个数,逆序对数会增加数列中比它小的数的个数。

 

  ④在一列数的前面删除一个数,逆序对数会减少数列中比它小的数的个数。

  以上抠神犇博客(因为我太懒了,发现了这些之后懒得写。。)

  设a[i]为当前l到r区间内>=i的数的个数,自然(r-l+1)-a[i]为当前l到r区间内<i的数的个数

  发现要区间修改值,原本想用线段树,后来发现树状数组差分可以做,就写了树状数组

  我的代码略丑,因为如果l<r的情况不知道怎么的就会错,所以加了几句判断

  一把辛酸泪


参考代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
struct LS
{
    int d,id;
}s[51000];
struct qn
{
    int l,r,id;
    LL d;
}q[51000];
int bk[51000];
bool cmp(qn n1,qn n2)
{
    return bk[n1.l]==bk[n2.l]?n1.r<n2.r:bk[n1.l]<bk[n2.l];
}
bool cmpd(qn n1,qn n2)
{
    return n1.id<n2.id;
}
bool lsd(LS n1,LS n2)
{
    return n1.d<n2.d;
}
bool lsid(LS n1,LS n2)
{
    return n1.id<n2.id;
}
LL a[51000];
int lowbit(int x){return x&-x;}
int n;
LL getsum(int x)
{
    LL ans=0;
    while(x!=0)
    {
        ans+=a[x];
        x-=lowbit(x);
    }
    return ans;
}
void change(int x,LL c)
{
    while(x<=n)
    {
        a[x]+=c;
        x+=lowbit(x);
    }
}
LL t[51000];
int main()
{
    scanf("%d",&n);
    int block=int(sqrt(n));
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&s[i].d);
        s[i].id=i;
        bk[i]=(i-1)/block+1;
    }
    sort(s+1,s+n+1,lsd);
    for(int i=1;i<=n;i++) s[i].d=i;
    sort(s+1,s+n+1,lsid);
    int m;
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&q[i].l,&q[i].r);
        q[i].id=i;
    }
    sort(q+1,q+m+1,cmp);
    int l=1,r=0;
    LL ans=0;
    memset(a,0,sizeof(a));
    for(int i=1;i<=m;i++)
    {
        while(l<q[i].l)
        {
            if(l>r){l++;continue;}
            ans-=(r-l+1)-getsum(s[l].d);
            change(1,-1);
            if(s[l].d!=n) change(s[l].d+1,1);
            l++;
        }
        while(l>q[i].l)
        {
            if(l>r+1){l--;continue;}
            ans+=(r-l+1)-getsum(s[l-1].d);
            l--;
            change(1,1);
            if(s[l].d!=n) change(s[l].d+1,-1);
        }
        while(r<q[i].r)
        {
            if(l>r+1){r++;continue;}
            ans+=getsum(s[r+1].d);
            r++;
            change(1,1);
            if(s[r].d!=n) change(s[r].d+1,-1);
        }
        while(r>q[i].r)
        {
            if(l>r){r--;continue;}
            ans-=getsum(s[r].d)-1;
            change(1,-1);
            if(s[r].d!=n) change(s[r].d+1,1);
            r--;
        }
        q[i].d=ans;
    }
    sort(q+1,q+m+1,cmpd);
    for(int i=1;i<=m;i++) printf("%lld\n",q[i].d);
    return 0;
}

 

以上是关于EXCEL中怎么判断一个数是不是存在在一列数中的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL中怎么判断一个数是不是存在在一列数中?

EXCEL 比较一列数据是不是在另一列出现过

关于Excel判断一列数据是不是在另一列中存在,并且把存在的数据提取出来

SQL中如何统计查询结果中某一列重复值的个数?

怎么用matlab隔段删去某几个数据?

Excel 用VBA统计这个表一共用多少列多少行