精华内容
下载资源
问答
  • 前景提要通过之前的学习,我们现在已经学会了如何批量打开工作薄,判断工作薄是否打开等操作,批量汇总工作薄的基本操作基本上都已经学了一遍了,相信聪明的你已经能够明白这些操作的方法了,那么今天我们就开始进入...

    前景提要

    通过之前的学习,我们现在已经学会了如何批量打开工作薄,判断工作薄是否打开等操作,批量汇总工作薄的基本操作基本上都已经学了一遍了,相信聪明的你已经能够明白这些操作的方法了,那么今天我们就开始进入核心部分,工作薄数据的汇总,相信很多人都已经安耐不住了吧,不过学东西还是要一步步的来,急不得的。

    在标题中,我们也是明确的强调了标准数据这几个字,什么是是标注数据呢,就是说当前要汇总的几个报表的数据格式字段都是完全相同的,不存在错位,字段不同等情况,这就是标准数据的意思,我们来看看实际的例子吧

    场景模拟

    我们在之前模拟的数据的基础上,继续复杂化数据,假设我们现在有不同的销售员在不同的商城的订单销售情况,同时也有香港以及部分海外地区的销售情况,如下图

    da3474d338b4efb6aef1258cb5793678.png

    这些数据我们都是放在一个文件夹内的,方便我们遍历,我们现在要做的就是遍历这个文件夹,将文件夹内的所有的工作薄的数据都汇总在test.xlsm这个工作薄内,那么要如何实现呢?

    方法分析

    我们先来想想看,如果人手手工操作的话,想要实现这样的效果,我们应该如何操作呢?

    首先我们人工操作的话,第一步就是打开工作薄,然后选择当前的活动区域,活动区域的选择我们可以使用UsedRange来选择,因为我们已经提前输入了标头,所以我们在复制其他的数据的时候,就不需要再次复制标头了,因为本案例中标头只有一行,我们就需要向下移动一行,移动要如何实现呢?之前我们学习过移动单元格用offset,至于复制粘贴,就是copy啦,这个非常简单,基础代码的框架我们前面已经写好了,今天我们继续补充复制汇总数据的代码。

    代码区

    Sub test()Dim pathn, sth As Workbook, rng As Range, rng1 As Range, sbook As Workbookpathn = ThisWorkbook.PathSet sbook = ThisWorkbookf = Dir(pathn & "")Do While f <> "" l = Cells(Rows.Count, 1).End(xlUp).Row If f <> "test.xlsm" Then For Each sth In Workbooks If sth.Name = f Then GoTo line End If Next sth Workbooks.Open (pathn & "" & f) '=====汇总工作薄的代码====== Set rng = ActiveSheet.UsedRange Set rng1 = rng.Offset(1, 0) rng1.Copy sbook.Worksheets(1).Cells(l + 1, 1) '=====汇总工作薄的代码====== ActiveWorkbook.Close True End Ifline: f = Dir()LoopEnd Sub

    我们来看看最终的效果

    ed959ea3a5b4328dd0ee62248e60cdf1.png

    非常的完美

    这里我们成功的将所有的数据的汇总在了一个工作薄中,为了验证数据的正确性,我随意打开其中一个工作薄,我们的打开购物天堂香港的工作薄

    许志安,马国明等知名演员都在这里,当然这是虚构的啦,我们来看看数据

    626b80e4c3a7fea3d3001d3ea5b3e3d1.png

    再看看总表的数据

    cf86fc35bb7004a2e052aa429acc52ef.png

    一个不多一个不少,完美的实现了数据的汇总,怎么样,小伙伴们,现在还觉得数据汇总很难嘛?

    代码分析

    Set sbook = ThisWorkbook

    定义一个新的工作薄的变量,方面我们后面的调用,本案例中,他就等于是test这个工作薄

    Set rng = ActiveSheet.UsedRange

    将当前的活动单元格复制给一个rng对象,活动区域是哪里呢?

    我们来调试下

    d4430c589a2fe53250b79f5475678ecf.png

    usedrange就是代表了当前活动工作表的所有被使用的数据区域的区间,注意这里是一个区间

    我们因为已经设置好了标头,所以这里我们不需要再次复制标头了,这里我们将我们所需要的区域往下移动一行,用offset实现,来看看效果

    a99f65dc62d1a13202eb570015e38f8d.png

    成功的避开了标头行,然后就是复制粘贴了。

    rng1.Copy sbook.Worksheets(1).Cells(l + 1, 1)

    这里就非常的简单了,因为我们之前已经获得了test的最后一个非空单元格,所以我们直接调用,在最后一个非空单元格粘贴数据就好 。

    后面的关闭遍历框架在之前我们就已经写好 。

    =======================================================

    OK。今天就分享到这里了,通过前面的分布学习,我们将汇总数据拆分成为几部不同的步骤来实现,本节我们成功的在之前的框架的基础上实现了简易的数据汇总功能,这样大家每节需要掌握的东西也比较少,拆分开来更好的理解,大家在消化一下吧。

    好了,明晚19:00,准时再见。

    ========历史相关文章==============================

    Excel VBA工作薄 5.2 多个工作薄数据汇总 起手式批量打开

    Excel VBA工作薄 5.3多个工作薄数据汇总2判断文件是否打开

    Excel VBA工作薄 5.4 批量汇总工作薄之随手关闭工作薄

    展开全文
  • //解析数据 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println(ip); System.out...
  • 我想创建类似下图的内容,当用户从组合框选项中选择年份、月份和日期时,这些操作将更改标题,并且必须根据所选数据进行更改,这很简单,我还是新手到目前为止,我已经做到了,问题是它起作用,我怎么能做到呢?,你能帮我...

    我想创建类似下图的内容,当用户从组合框选项中选择年份、月份和日期时,这些操作将更改标题,并且必须根据所选数据进行更改,这很简单,我还是新手

    到目前为止,我已经做到了,问题是它不起作用,我怎么能做到呢?,你能帮我一下吗?

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JTextField;

    public class DateForm_Complete extends JFrame {

    private JLabel year, month, day;

    private JComboBox cmonth, cday, cyear;

    public DateForm_Complete() {

    setTitle("Date Selection");

    setSize(400,100);

    setupWidgets();

    setVisible(true);

    }

    private void setupWidgets() {

    year= new JLabel("Year");

    month= new JLabel("Month");

    day= new JLabel("Day");

    cyear= new JComboBox();

    cmonth= new JComboBox();

    cday= new JComboBox();

    setLayout(new GridLayout (2,3));

    add(year); add(month); add(day);

    add(cyear); add(cmonth); add(cday);

    for (int i=1900; i<2019; i++)

    {

    cyear.addItem(i);

    }

    String months[] = {"January","February","March","April","May","June","July","August","September","October","November","December"};

    for (int i=0; i<12; i++)

    {

    cmonth.addItem(months[i]);

    }

    for (int i=1; i<32; i++)

    {

    cday.addItem(i);

    }

    setupEvents();

    }

    private void setupEvents() {

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    cyear.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent ev) {

    JComboBox combo = (JComboBox)ev.getSource();

    String texty = (String)combo.getSelectedItem();

    }

    });

    cmonth.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent ev) {

    JComboBox combo = (JComboBox)ev.getSource();

    String textm = (String)combo.getSelectedItem();

    }

    });

    cday.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent ev) {

    JComboBox combo = (JComboBox)ev.getSource();

    String textd = (String)combo.getSelectedItem();

    }

    });

    setTitle("Today is "+ texd+ "of "+ textm + "of " +texty);

    }

    public static void main(String[] args) {

    new DateForm_Complete();

    }

    }

    展开全文
  • 关于决策树的基础概念就过多介绍了,至于是分类还是回归。。我说清楚。。我用的数据集是这个http://archive.ics.uci.edu/ml/datasets/Abalone就是通过一些属性来预测鲍鱼有多少头,下面看一下Length / ...

    作为机器学习的小白和matlab的小白自己参照 python的 《机器学习实战》 写了一下分类回归树,这里记录一下。

    关于决策树的基础概念就不过多介绍了,至于是分类还是回归。。我说不清楚。。我用的数据集是这个http://archive.ics.uci.edu/ml/datasets/Abalone 就是通过一些属性来预测鲍鱼有多少头,下面看一下

    Length / continuous / mm / Longest shell measurement

    Diameter/ continuous / mm / perpendicular to length

    Height / continuous / mm / with meat in shell

    Whole weight / continuous / grams / whole abalone

    Shucked weight / continuous/ grams / weight of meat

    Viscera weight / continuous / grams / gut weight (after bleeding)

    Shell weight / continuous / grams / after being dried

    Rings / integer / -- / +1.5 gives the age in years

    这些属性除了最后的Rings是整数,可以看做是离散的,其他都是浮点数,是连续的。所以还是用cart中二分的思想,就是小于等于分一边,大于分一边。但是没有用gini指数,因为熵还是好一点。

    参照《机器学习实战》代码有5个部分:getEnt(获取信息熵),splitDataset(通过属性和阈值分割数据集),chooseBestFeatureToSplit(寻找最佳分割点和阈值),createTree(建树),predict(预测)。

    我按流程梳理一下,首先函数脚本来将数据集划分成,训练集和测试集,然后用训练集建树,用测试集测试,(更改后变成bootstrap sampleing)

    dataset = importdata('abalone.data.txt') ;

    origin_data = dataset.data ;

    labels = {'Length';'Diam';'Height'; 'Whole';'Shucked';'Viscera';'Shell';'Rings'} ;

    test_runtimes = ;

    ae = ;

    rr = ;

    for i=:test_runtimes

    data = sampleWithReplace(origin_data) ;%bootstrap sampling

    len = floor(length(data)/*) ;

    train_data = data(:len,:) ;

    test_data = data(len:end,:) ;

    test_y_truth = test_data(:,end) ;

    % tree = createTree(train_data,labels,) ;

    % predict_y = predict(tree,test_data,labels) ;

    % com_matrix = [predict_y,test_y_truth] ;

    % count = sum(predict_y==test_y_truth) ;

    % disp(com_matrix) ;

    % disp(mae) ;

    % disp(rr) ;

    %plot single runtime

    % x = ::size(test_y_truth,) ;

    % plot(x,predict_y,'-b',x,test_y_truth,'-r') ;

    ae = ae+sum(abs(predict_y-test_y_truth))/size(test_y_truth,) ;

    rr = rr+count/size(test_y_truth,) ;

    %trian with office tools fitctree

    std_tree = fitctree(train_data(:,:),train_data(:,end)) ;

    % view(std_tree) ;

    std_y = predict(std_tree,test_data(:,:)) ;

    % disp([std_y,y]) ;

    ae = ae+sum(abs(std_y-test_y_truth))/size(test_y_truth,) ;

    rr = rr+sum(std_y==test_y_truth)/size(test_y_truth,) ;

    end

    mae = mae / test_runtimes ;

    mrr = rr / test_runtimes ;

    disp('mae') ;

    disp(mae) ;

    disp('mrr') ;

    disp(mrr) ;

    createTree函数:由于matlab没有指针,所以只能写成嵌套结构,就像tree{tree{tree}}这样。我们是递归实现的,但怎么样才会停止建树?条件是当前节点所有标签的类别一样,比如rings都为10,那说明这一个子集已经纯了,或者是这颗树的高度已经超出了我们设的阈值,就停止,第二种情况很可能当前节点下的数据集不纯,我们就找一个出现频率最高的类别代表该节点

    function [ tree ] = createTree( dataset,labels,heightcount )

    len = size(dataset,) ;

    templabel = dataset(,end) ;

    tree = templabel ;

    max_depth = ;%最大树高

    flag = ; %判断是否数据集中所有标签都一致了(纯的),是则返回

    for i=:len

    if templabel~=dataset(i,end) ;

    flag = ;

    end

    end

    if flag==

    return ;

    end

    if heightcount>max_depth

    labelVec = dataset(:,end) ;

    disp(labelVec) ;

    element = :max(labelVec) ;

    counts = histc(labelVec,element) ;

    [~,max_idx] = max(counts) ;

    tree = element(max_idx) ;

    return ;

    end

    [bestFeat,bestT] = chooseBestFeatureToSplit(dataset) ;

    bestFeatLabel = labels{bestFeat} ;

    tree = struct ;%struct储存树结构

    tree.bestFeatLabel = bestFeatLabel ;

    tree.bestT = bestT ;

    tree.greaterthan = createTree(splitDataset(dataset,bestFeat,bestT,),labels,heightcount+) ;%大于阈值部分的子树

    tree.lessthan = createTree(splitDataset(dataset,bestFeat,bestT,),labels,heightcount+) ;%小于阈值部分的子树

    end

    chooseBestFeatureToSplit函数:在createTree时,每次递归都要找那个当前最佳的特征和阈值,也就是调用chooseBestFeatureToSplit函数,所以两层循环,第一层遍历每个属性,第二层本应该遍历每个属性下的值,但是那样计算量太大了,所以我就将值排序之后分成10端取中位数遍历,在里面找阈值,如果当前节点的数据子集已经不足10个里,那就把所有属性都遍历一哈

    function [ bestFeat,bestT ] = chooseBestFeatureToSplit( dataset )

    [~,numFeats] = size(dataset) ;

    numFeats = numFeats- ;%除去标签那一列

    baseEnt = getEnt(dataset) ;

    baseInfoGain = ;

    bestFeat = - ;

    for i=:numFeats

    featVec = dataset(:,i) ;

    %由于值是连续的,所以对于特征向量组排序分成n段取中位数

    sortedFeatVec = sort(featVec,'ascend') ;

    lengthofT = floor(sqrt(length(sortedFeatVec))) ; %取向量长度开根号来确定阈值的个数

    if lengthofT<

    lengthofT = length(sortedFeatVec) ;

    selectedFeat = sortedFeatVec ;

    else

    step = floor(length(sortedFeatVec)/lengthofT) ;

    selectedFeat = zeros(lengthofT,) ;

    for j=:lengthofT

    head = (j-)*step+ ;

    tail = j*step ;

    subSortedFeatVec = sortedFeatVec(head:tail) ;

    selectedFeat(j) = median(subSortedFeatVec) ;

    end

    end

    for k=:lengthofT

    newEnt = ;

    for l=:

    subDataset = splitDataset(dataset,i,selectedFeat(k),l) ;

    prob = size(subDataset,)/size(dataset,) ;

    newEnt = newEnt + prob*getEnt(subDataset) ;

    end

    infoGain = baseEnt - newEnt ;

    % disp('infoGain') ;

    % disp(infoGain) ;

    if(infoGain>baseInfoGain)

    baseInfoGain = infoGain ;

    bestFeat= i ;

    bestT = selectedFeat(k) ;

    end

    end

    end

    end

    计算信息增益(infoGain)的时候需要用到getEnt(获取信息熵),splitDataset(通过属性和阈值分割数据集)函数

    splitDataset:

    function [ retDataset ] = splitDataset(dataset,axis,value,arg )

    %axis 代表键值的位置 value表示阈值 返回划分后的dataset,arg表示取大于的部分()还是小于等于的部分

    if arg==

    retDataset = dataset(dataset(:,axis)>value,:) ;

    else

    retDataset = dataset(dataset(:,axis)<=value,:) ;

    end

    end

    getEnt:

    function [ ent ] = getEnt( data )

    %index present the label

    [datalen,~] = size(data) ;

    maxLabel = max(data(:,end)) ;

    labelCountsMap = zeros(maxLabel,) ;%rings are all numbers

    for i=:datalen

    label = data(i,end) ;

    if labelCountsMap(label)~=

    labelCountsMap(label) = labelCountsMap(label) + ;

    else

    labelCountsMap(label) = ;

    end

    end

    ent = ;

    % disp('labelMap') ;

    % disp(labelCountsMap) ;

    for i=:maxLabel

    if labelCountsMap(i)~=

    prob = labelCountsMap(i)/datalen ;

    ent = ent - prob*log2(prob) ;

    end

    end

    end

    最后预测函数:

    function [ classVec ] = predict( tree , dataset , labels)

    %tree应由createTree函数生成

    len = size(dataset,) ;

    classVec = zeros(len,) ;

    for i=:len

    dataVec = dataset(i,:end-) ;

    tempnode = tree ;

    while(isstruct(tempnode))

    [~,tempFeatIdx] = ismember(tempnode.bestFeatLabel,labels) ;

    if(dataVec(tempFeatIdx)>tempnode.bestT)

    tempnode = tempnode.greaterthan ;

    else

    tempnode = tempnode.lessthan ;

    end

    end

    classVec(i) = tempnode ;

    end

    end

    更新了一下代码,加入了boostrap采样,就是有放回的采样,我是这样采用的,有多少个样本就进行多少次有放回采样,然后这个过程进行50次求均值。用了之后,官方的库正确率道理44%,而我的还在30%。。差距一下突显,还需继续学习。。

    补充一下那个sampleWithReplace函数

    function [ sample_data ] = sampleWithReplace( dataset )

    len = size(dataset,) ;

    randidx = randsample(len,len,true) ;

    sample_data = dataset(randidx,:) ;

    end

    连续值的CART(分类回归树)原理和实现

    上一篇我们学习和实现了CART(分类回归树),不过主要是针对离散值的分类实现,下面我们来看下连续值的cart分类树如何实现 思考连续值和离散值的不同之处: 二分子树的时候不同:离散值需要求出最优的两个 ...

    用cart(分类回归树)作为弱分类器实现adaboost

    在之前的决策树到集成学习里我们说了决策树和集成学习的基本概念(用了adaboost昨晚集成学习的例子),其后我们分别学习了决策树分类原理和adaboost原理和实现, 上两篇我们学习了cart(决策分 ...

    CART回归树

    决策树算法原理(ID3,C4.5) 决策树算法原理(CART分类树) 决策树的剪枝 CART回归树模型表达式: 其中,数据空间被划分为R1~Rm单元,每个单元有一个固定的输出值Cm.这样可以计算模型输 ...

    决策树算法原理&lpar;CART分类树&rpar;

    决策树算法原理(ID3,C4.5) CART回归树 决策树的剪枝 在决策树算法原理(ID3,C4.5)中,提到C4.5的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处理分类不 ...

    大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数&lpar;5&rpar;

    第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...

    机器学习实战---决策树CART回归树实现

    机器学习实战---决策树CART简介及分类树实现 一:对比分类树 CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方.首先,我 ...

    机器学习实战---决策树CART简介及分类树实现

    https://blog.csdn.net/weixin_43383558/article/details/84303339?utm_medium=distribute.pc_relevant_t0. ...

    sklearn 学习之分类树

    概要 基于 sklearn 包自带的 iris 数据集,了解一下分类树的各种参数设置以及代表的意义.   iris 数据集介绍 iris 数据集包含 150 个样本,对应数据集的每行数据,每行数据包含 ...

    sklearn CART决策树分类

    sklearn CART决策树分类 决策树是一种常用的机器学习方法,可以用于分类和回归.同时,决策树的训练结果非常容易理解,而且对于数据预处理的要求也不是很高. 理论部分 比较经典的决策树是ID3.C ...

    随机推荐

    VueJs2&period;0建议学习路线

    最近VueJs确实火了一把,自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新手来说,如何高效快速的学习Vue2.0呢. 既然大家会看这篇文章,那么 ...

    HTML之&lt&semi;&excl;DOCTYPE&gt&semi; 标签介绍

    实例:

    文档的标题 & ...

    suse linux编译安装GCC报错

    gcc编译安装过程 1.先安装三个库 gmp mprc mpc 这三个库的源码要到官网去下载 1)安装gmp:首先建立源码同级目录 gmp-build,输入命令,第一次编译不通过,发现缺少一个叫m4的 ...

    nginx 配置访问正则匹配

    server{ listen 80; server_name api.zyy.com; root /var/www/api_zyy; index index.php; location ~ /asse ...

    myeclipse搭建svn插件

    在网上查了一下,安装的方法有几种,这里给大家推荐一种快速安装的方法. //第一步 : 下载 site-1.6.5.zip //===================================== ...

    Codeforces&num;362

    A题 题意:给定一串数列,t,t+s,t+s+1,t+2s,t+2s+1......问某一个数是否是数列当中的 题意:只需判断(x-t)与(x-t-1)能否整除s即可,注意起始时的判断 #includ ...

    appium启动运行log分析

    1.手动启动appium 服务 > Launching Appium server with command: C:\Program Files (x86)\Appium\node.exe ...

    Python 集合 深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

    Codeforces 960F - Pathwalks

    960F - Pathwalks 思路: ORZ 杜老师 用map写1e5个树状数组,骚操作 记Q为query和update次数,则节点个数约为Q*log(N) 代码: #include

    展开全文
  • ,公司的HR小姐姐就有这个需求,说她手头上有一份招聘数据,她想把“薪水”超过20000的行突出显示出来,应该怎么操作呢?如上图所示,我们需要把薪水超过20000的行,通过填充颜色突出显示出来。如何实现呢?还是...

    f5befe0051ebfd44af264d351d9df6a0.png

    ​当表格里数据比较多时,很多时候我们为了便于观察数据,会特意把符合某些特征的数据行高亮显示出来。这不,公司的HR小姐姐就有这个需求,说她手头上有一份招聘数据,她想把“薪水”超过20000的行突出显示出来,应该怎么操作呢?

    67efe7cbb7250a4856a73ebf61f52b53.png

    如上图所示,我们需要把薪水超过20000的行,通过填充颜色突出显示出来。如何实现呢?还是要用到excel里的“条件格式”哦。

    【条件格式】位于【开始】选项卡下,常规的用法有“突出显示单元格规则”、“数据条”、“色阶”、“图标集”等,这些我们在前面的文章里都有详细介绍到。

    b0fad1183982ccf129e981be5e558e14.png

    这一次,我们要用到的并不是这些内置的条件规则,而是要自己DIY条件规则。

    在实操之前,肯定会有小伙伴问到:为什么不能直接用“突出显示单元格规则”里的“大于”规则?只要数据大于20000的,就一律设置为突出显示,不可以么?

    答案是不可以!下面告诉你为什么?

    1.为什么不能直接用“大于”规则?

    如下图,在选中了薪水列数据之后,点击进行“大于”规则设置:

    256fe16f991017cb5ea8fd5636fe566a.png

    ecb31663760eec256774dd2b5bd08dbf.png

    最终结果如下:

    d6366221c3a9a3194c8ebbf4c5440971.png

    薪水大于20000的单元格虽然高亮显示了,但这并不满足我们的需求,我们要的是,对应的数据行,整行都高亮显示。

    所以,在这里要提醒小伙伴们,如果想实现整行的突出显示,“突出显示单元格规则”是不适用的。“突出显示单元格规则”顾名思义,就是对符合规则的“单元格”进行设置,而不是对“数据行”进行设置。其它excel内置的条件规则,也一样有这样的限制。

    那么,要实现整行的条件规则设置,应该如何操作?既然excel内置的条件规则已经不够用了,下面就自己动手DIY新规则吧。

    2.如何使特定数据行高亮显示?

    首先,选定要进行规则设置的数据范围:选定第一行数据行后,同时按住Ctrl+Shift+向下方向键,可快速选定所有数据行。

    (提醒:不要选定标题行,因为标题行是文本,在excel的世界里,文本是永远大于数值的哦,如果选定了标题行,excel也会对标题行进行判断)

    然后,在【开始】选项卡下,单击【条件格式】按钮,在展开的下拉菜单中,单击【新建规则】命令项,如下图:

    7dde9e1076d6c1db66d933fe3ea4c63b.png

    在弹出的【新建格式规则】窗口里,选择“使用公式确定要设置格式的单元格”。

    然后在公式框里输入公式:=$F2>20000,再单击下方的“格式”,对格式进行设置。在此处演示中,我选择填充黄色。

    12ab6f4f1018b2ce5b22dc4848dc8a4b.png

    这里对上面的公式进行一下解释:

    公式:=$F2>20000,是什么意思呢,就是判断F2单元格的数据,是否大于20000,如果大于20000,就按照设置的格式进行数据行的显示。

    $F2,F2单元格前面的这个符号$,是绝对引用符号,表示锁定的意思,也就是锁定F列,只根据F列的数据来进行判断,F列为绝对引用。

    那为什么只锁定列,而不锁定行呢?为什么F2这个“2”不锁定?因为公式还要往下进行判断,我们还要继续判断F3,F4,F5,F6…等等单元格的数据是否大于20000,所以,行是相对引用,不用进行锁定。像这种只锁定列而不锁定行,或只锁定行而不锁定列的,在excel里又称为“混合引用”。

    最终效果如下图所示:

    a86a724878be607d1ef3f9eabaa3b9c6.png

    只有薪水大于20000的数据行,才会被突出显示。

    3.总结:

    Excel里的条件格式的设置,除了内置的规则,我们还可以自定义规则,使得符合需求的数据行突出显示。

    当然,关键是对excel里的绝对引用/相对引用熟练掌握,然后再借助公式来实现。

    推荐:人工智能时代的必学技能

    faab951f4268daa7c1b3dc2671ea4ae5.png
    展开全文
  • 通过阅读有关此问题的其他问题:ValueError: setting an array element with a sequence,这可能是由于我的数据结构错误,还是因为我的数据是字符串类型.这里似乎都不是这样.如果您有任何解决方法或其含义,请告诉我....
  • 需求分析有些时候我们会对采购订单或者销售订单中的条件问题进行多次分析,无论是消息输出类型还是定价条件或税收条件,当然很多时候我们可以通过查找条件记录的存储表,来查看数据进行分析,这是其中的一种方法,...
  • spring controller是默认是单例,不要使用非静态的成员变量,否则会... 2:万一必须要有一个非静态的成员变量时,则通过注解@Scope(“prototype”),将其设置为多例模式。 3:在Controller中使用ThreadLocal变量 ...
  • 刚买华为手机最烦的是每天都提示系统更新,就算设置不提醒,过两天又开始提醒,不死不休,最后还是一次手误最终还是让它得逞了,自动更新了,下面就说说怎么通过ADB操作更新系统和卸载系统自带的软件,来延长电池...
  • <div><p>我的页面是通过vue动态加载弄出来的 我在加载完毕之后调用了你的 refresh但是还是现实全 请问怎么解决 我用的是最新版本 我打印了数据如下 其中 #main 为内容容器 console.log($('#wrapper')....
  • 当我们的程序中有多个ListView 时怎么设置ListView 的高度成了一个问题。 ListView中数据个数是确定的,显然能将高度写死。 但通过测试发现,无论将高度设置为匹配父控件还是包裹内容,都能正常显示所有内容...
  • 知道怎么找回,好在数据有备份,直接用备份还原了。还原了还是三天两头的丢失数据,想这不是办法啊。由于本人懂JSP。所以仅仅能从外围去防护。通过nginx的设置把网站的配置文件隐藏(JSP的配置文件竟然是xml,...
  • 列表是存储数据的一种机制,它要被用户看到,其实都是需要通过视图的。上面这个图,其实要认真说起来呢,不是列表,而是看到列表的一个视图:“所有项目”,这是任何列表默认的视图。 这个视图在
  •  OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的。  下面是程序一例:  程序代码:sql = "select * from tablename";  rs = stmt.executeQuery(sql);  //新建Excel...
  • 现代人对于手机的依赖程度非常之高,平常也会有很多的数据储存在手机上,如果小心丢失了这些数据还是比较麻烦的。今天要以苹果手机的通讯录为例来给大家分享一下恢复方法,如果你在使用手机的时候有遇到通讯录...
  • 百度Echarts的标题title属性详细设置

    千次阅读 2020-05-09 16:31:03
    官网上的Echarts的配置介绍已经十分详细,但是对于不怎么熟练的人而言,看起来还是比较突兀的。创建Echarts项目步骤: 1.引入ECharts 通过标签方式直接引入构建好的 echarts 文件 <!DOCTYPE html> <...
  • 发现其中有一个开源的Silverlight 列表控件,发现它功能很强,而且很实用,属于那种需要怎么设置就能完成很多常用甚至常用的功能,下面通过运行截图做一下简单介绍. 不同的数据列类型显示(日期,复选框,...
  • 在cordova开发的时候使用到了$http的post方法,传递的参数服务端怎么都接收到,搜索了下,发现使用AngularJS通过POST传递参数还是需要设置一些东西才可以! 1、能直接使用params 例如: $http({ method...
  • 在cordova开发的时候使用到了$http的post方法,传递的参数服务端怎么都接收到,搜索了下,发现使用AngularJS通过POST传递参数还是需要设置一些东西才可以! 1、能直接使用params 例如: $http({ method: POST, ...
  • 首先说下机型是iPhone XS Max我是23号...首先我最开始用的是爱思助手进行的更新降级操作设置的是常规快速刷机保存用户数据 到60%的时候跳出-53的报错此时心里慌的一批心想不是官方的就是不怎么靠谱 然后就是通过
  • <div><p>需求是 当我 设定一个范围后 比如 2016年1月-12月,进入日期选择界面后 自动跳转到当天日期 ...还知道怎么移除上一个选中日期</p><p>该提问来源于开源项目:TUBB/CalendarSelector</p></div>
  • 还是直接把其他所有的数据都同步一份过来? 还有如果现在用了4台beansdb,想再加一台beansdb,现有在使用一致性hash基础上,该如何做? 在beansdb机器数目发生改变的时候,是...
  • 在cordova开发的时候使用到了$http的post方法,传递的参数服务端怎么都接收到,搜索了下,发现使用AngularJS通过POST传递参数还是需要设置一些东西才可以!1、能直接使用params例如:$http({method: "POST",url:...
  • 通常的处理,我们还是要在FULLGC时取到当时的dump文件,来分析内存里都有哪些数据占居着内存。这里有两种办法来获取dump文件: 1.通过在jvm里添加参数配置:+HeapDumpBeforeFullGC,+HeapDumpAfterFullGC 这种方法...
  • debian mysql5.0 create table parent( id int not null primary key ) engine = innodb...只是,知道该怎么算分,自己给自己么 [b]问题补充:[/b] 呵呵,没见过这么求分的,其实我也没几分,不过重要的是共同进步
  • 同样,很多网站为了保护自己的数据,也设置了各种各样的反爬虫机制,即使如此,网络爬虫还是有办法去突破。今天小编为大家介绍一些常见的反网络爬虫以及突破方法。 1、动态页面限制 有的时候将目标页面抓取下来,...
  • 这种方法带来的后果就是你能直接修改数组的长度或者通过下标去修改数组。参见官网</a>)。这样改进之后我就需要对数组元素进行响应式处理,只是遇到数组的时候把数组的方法变异即可。于是在用户使用...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 273
精华内容 109
关键字:

怎么设置数据通过还是不通过