精华内容
下载资源
问答
  • 第一步:在打开两个Excel表格,在不同的工作表中,例如sheel1,sheel2第二步:在合并表格的后面添加列名:第三步:在列明对应的单元格下,点击公式,并选择插入函数,在搜索框中输入:vlookup, 此时会出现一个函数...

    第一步:在打开两个Excel表格,在不同的工作表中,例如sheel1,sheel2

    第二步:在合并表格的后面添加列名:

    第三步:在列明对应的单元格下,点击公式,并选择插入函数,在搜索框中输入:vlookup,

                 此时会出现一个函数VLOOKUP,双击次函数

    第四步:此时会出现一个对话框,共4个输入框需要填充:

             1.本工作表中的公共ID位置,即对应的那个单元格名称,例如:A2

             2.输入另一种表的搜索范围:例如sheel1!A:G (表示sheel工作表,中间感叹号分割,A到G列范围)

             3.表示如果匹配成功,显示另一张表的第几列。例如:2,表示如果匹配成功,

                将另张表的第二列对应值填写在当前位置。

              4.表示匹配条件:如果填写false,表示精确匹配,如果填写true或者忽略,则表示大职匹配。

              5.点击确定就可以得到你想要的结果。

    第五步,当计算完一个值时,将鼠标移动到该单元格的右下角,出现黑点是,双击便会将该列全部计算出来。


    恭喜您已经学会使用Excel进行两个关联表格的合并!!!

             

    展开全文
  • QT之PushButton扮演的那几种角色1、效果预览查看2、信号槽关联,按键信号与槽函数触发3、 按键按下和弹起分别做不同的事情3、 加载qss样式,让按键看起来更加的美3、 程序关键代码头文件和源文件 1、效果预览查看 2...

    1、效果预览查看

    在这里插入图片描述

    2、创建线程,执行写

    创建线程的目的就是为了让excel表写的动作放到后台去执行,这样的好处就是主线程只是专门负责数据的追加,不会造成主线程添加excel表数据写入的时候主线程的卡顿。

    // 后台线程执行写入
    void cReportThread::run()
    {
    	while (true)
    	{
    		QThread::msleep(100);
    
    		if (m_ptr->bAppExit)
    			return;
    
    		QVariant varDev;
    		if (operatorDevReport(2, varDev))
    			cExcelWriter::getInstance().writeDevRunState(varDev);  // 后台执行数据写入动作
    			
    	}
    }
    
    
    // 将对象添加到链表,然后后台线程执行对象写到文档
    void cReportThread::addDevReport(QVariant &var)
    {
    	if (var.isNull() || !var.isValid())
    		return;
    
    	operatorDevReport(1, var);
    }
    
    // 操作方法
    bool cReportThread::operatorDevReport(int nType, QVariant &var)
    {
    	bool bRet = true;
    	static QList<QVariant> varList;
    	static QMutex mutex;
    
    	mutex.lock();
    	switch (nType)
    	{
    	case 1:  // 添加到数据链表
    	{
    		if (var.isNull() || !var.isValid())
    			bRet = false;
    		else
    			varList.push_back(var);
    	}break;
    
    	case 2:  // 从数据链表获取元素,并剔除元素
    	{
    		if (0 == varList.size())
    			bRet = false;
    		else
    			var = varList.takeFirst();
    	}break;
    	default:
    		break;
    	}
    	mutex.unlock();
    
    	return bRet;
    } 
    

    3、 将数据写入EXCEL文件

    定义sDevReport对象,通过该对象结构进行测试数据赋值,通过获取到的数据来执行excel数据表的写入。

    struct sDevReport
    {
    	QString strDevState = "";
    	QString strBeginWork = "";
    	QString strEndWork = "";
    	QString strRemarks = "";
    };
    Q_DECLARE_METATYPE(sDevReport)
    

    添加测试数据,写入excel表里面。

    	// test data
    	cWorkReport ExcelReport;
    	for (int i = 0; i < 20; i++)
    	{
    		sDevReport dev;
    		dev.strBeginWork = QString("begin-%1").arg(i);
    		dev.strDevState = QString("state-%1").arg(i);
    		dev.strEndWork = QString("end-%1").arg(i);
    		dev.strRemarks = QString("remaks-%1").arg(i);
    		ExcelReport.addDevReport(QVariant::fromValue(dev));
    	}
    

    这里是对sDevReport数据对象写入excel表的具体实现方式。

    int cExcelWriter::writeDevRunState(QVariant var)
    {
    	sDevReport report = var.value<sDevReport>();
    	QString strReportFile = QApplication::applicationDirPath() + DIR_WORK_REPORT + DIR_DEV_REPORT + "/Dev-" + m_strToday + ".xlsx";
    
    	int nRowHeight = 15;
    	int nColWidth = 25;
    	if (!QFile::exists(strReportFile))
    	{
    		// 写入excel表头
    		QStringList strTableNameList;
    		strTableNameList << QString::fromLocal8Bit("状态(State)")
    			<< QString::fromLocal8Bit("开始时间(Begin Work)")
    			<< QString::fromLocal8Bit("结束时间(End Work)")
    			<< QString::fromLocal8Bit("耗时/秒(Use Time)")
    			<< QString::fromLocal8Bit("备注(Remarks)");
    
    		QXlsx::Document xlsx(strReportFile);
    		QXlsx::Format format;
    		format.setFontBold(true);
    		format.setPatternBackgroundColor(QColor(RGB_TABLE));   // 设置列背景颜色
    		format.setFontSize(10);
    		format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
    
    		for (int i = 0; i < strTableNameList.size(); i++)
    		{
    			xlsx.setColumnWidth(i + 1, nColWidth);
    			xlsx.setRowHeight(1, nRowHeight);
    			xlsx.write(1, i + 1, strTableNameList.at(i), format);
    		}
    
    		xlsx.saveAs(strReportFile);
    	}
    
    
    	QXlsx::Document xlsx(strReportFile);
    	int nRows = xlsx.dimension().rowCount() + 1;
    	QXlsx::Format format;
    	format.setHorizontalAlignment(QXlsx::Format::AlignLeft);
    
    	// 设置行高
    	xlsx.setRowHeight(nRows, nRowHeight);
    	xlsx.write(nRows, 1, report.strDevState, format);
    	xlsx.write(nRows, 2, report.strBeginWork, format);
    	xlsx.write(nRows, 3, report.strEndWork, format);
    	xlsx.write(nRows, 4, "", format);
    	xlsx.write(nRows, 5, report.strRemarks, format);
    	xlsx.saveAs(strReportFile);
    
    	return 0;
    }
    

    4、 程序关键代码源文件

    全部代码下载链接: https://download.csdn.net/download/u013083044/14993348

    #include "ReportThread.h"
    #include "QMutex"
    #include <QVariant>
    #include "ExcelWriter.h"
    #include "ExcelStruct.h"
    
    struct sReportThread
    {
    	bool bAppExit = false;
    };
    
    cReportThread::cReportThread(QObject *parent)
    	: QThread(parent)
    {
    	m_ptr = new sReportThread;
    
    	this->start();
    }
    
    cReportThread::~cReportThread()
    {
    	if (m_ptr != nullptr)
    	{
    		m_ptr->bAppExit = true;
    		this->wait(1000);
    		delete m_ptr;
    	}
    }
    
    cReportThread& cReportThread::getInstance()
    {
    	static cReportThread instance;
    	return instance;
    }
    
    // 后台线程执行写入
    void cReportThread::run()
    {
    	while (true)
    	{
    		QThread::msleep(100);
    
    		if (m_ptr->bAppExit)
    			return;
    
    		QVariant varDev;
    		if (operatorDevReport(2, varDev))
    			cExcelWriter::getInstance().writeDevRunState(varDev);
    			
    	}
    }
    
    
    // 将对象添加到链表,然后后台线程执行对象写到文档
    void cReportThread::addDevReport(QVariant &var)
    {
    	if (var.isNull() || !var.isValid())
    		return;
    
    	operatorDevReport(1, var);
    }
    
    // 操作方法
    bool cReportThread::operatorDevReport(int nType, QVariant &var)
    {
    	bool bRet = true;
    	static QList<QVariant> varList;
    	static QMutex mutex;
    
    	mutex.lock();
    	switch (nType)
    	{
    	case 1:
    	{
    		if (var.isNull() || !var.isValid())
    			bRet = false;
    		else
    			varList.push_back(var);
    	}break;
    
    	case 2:
    	{
    		if (0 == varList.size())
    			bRet = false;
    		else
    			var = varList.takeFirst();
    	}break;
    	default:
    		break;
    	}
    	mutex.unlock();
    
    	return bRet;
    }
    
    #include "ReportThread.h"
    #include "QMutex"
    #include <QVariant>
    #include "ExcelWriter.h"
    #include "ExcelStruct.h"
    
    struct sReportThread
    {
    	bool bAppExit = false;
    };
    
    cReportThread::cReportThread(QObject *parent)
    	: QThread(parent)
    {
    	m_ptr = new sReportThread;
    
    	this->start();
    }
    
    cReportThread::~cReportThread()
    {
    	if (m_ptr != nullptr)
    	{
    		m_ptr->bAppExit = true;
    		this->wait(1000);
    		delete m_ptr;
    	}
    }
    
    cReportThread& cReportThread::getInstance()
    {
    	static cReportThread instance;
    	return instance;
    }
    
    // 后台线程执行写入
    void cReportThread::run()
    {
    	while (true)
    	{
    		QThread::msleep(100);
    
    		if (m_ptr->bAppExit)
    			return;
    
    		QVariant varDev;
    		if (operatorDevReport(2, varDev))
    			cExcelWriter::getInstance().writeDevRunState(varDev);
    			
    	}
    }
    
    
    // 将对象添加到链表,然后后台线程执行对象写到文档
    void cReportThread::addDevReport(QVariant &var)
    {
    	if (var.isNull() || !var.isValid())
    		return;
    
    	operatorDevReport(1, var);
    }
    
    // 操作方法
    bool cReportThread::operatorDevReport(int nType, QVariant &var)
    {
    	bool bRet = true;
    	static QList<QVariant> varList;
    	static QMutex mutex;
    
    	mutex.lock();
    	switch (nType)
    	{
    	case 1:
    	{
    		if (var.isNull() || !var.isValid())
    			bRet = false;
    		else
    			varList.push_back(var);
    	}break;
    
    	case 2:
    	{
    		if (0 == varList.size())
    			bRet = false;
    		else
    			var = varList.takeFirst();
    	}break;
    	default:
    		break;
    	}
    	mutex.unlock();
    
    	return bRet;
    }
    
    展开全文
  • 我们在用excel表格获取数据时会通过不同的渠道获取到有关联的数据,再将数据存储到mysql中,此时就要为数据标记Id,那么当数据庞大的时候如何将相关联表格自动建立Id呢?这就需要用到excel的功能了——vlookup步骤...

    我们在用excel表格获取数据时会通过不同的渠道获取到有关联的数据,再将数据存储到mysql中,此时就要为数据标记Id,那么当数据庞大的时候如何将相关联的表格自动建立Id呢?这就需要用到excel的功能了——vlookup

    步骤:

    这里有三张表,关联表有股东和公司的关联关系但没有建立各自的Id


    可以看到关联表是没有关联Id的



    该怎么做?

    tip1:选中关联表的company列,选择公式项然后插入函数,查找函数选择vlookup,然后点击确定。

                                               


    tip2:确定之后会弹出一个函数参数对话框

                                    

    tip3:根据需要设置相应的值,如图所示

                                       

    查找值:选择关联表的B列全部作为要查找的公司来源

    数据表:选择公司表全部,在里面根据公司匹配ID给关联表

    列序数:选择要查找的Id所在列即第二列

    匹配条件:大致匹配为0,精确匹配为1

    最后点击确定。

    tip4:将所得的公式填充到整列即可得到对应的Id值。同理,股东Id也可以也同样方法获得。结果如图所示



    自动匹配公司表和股东表的ID。

    展开全文
  • excel的使用

    2012-11-25 17:06:01
    6、自定义函数虽然Excel中已有大量的内置函数,但有时可能还会碰到一些计算无函数可用的情况。假如某公司采用一个特殊的数学公式计算产品购买者的折扣,如果有一个函数来计算岂不更方便?下面就说一下如何创建这样的...
  • 运用函数进行复杂数据计算、进行表间关联和索引;掌握数据透视表中的计算和分析;掌握图表设置中的技巧,及特殊图表制作,运用动态图表展示数据;了解Excel中数据分析工具,认识宏,并运用宏提高工作效率。 课程大纲...
  • 当对 N 个主体中的每一个变量进行观测时,CORREL 工作表函数可计算两个测量变量之间的相关系数。(缺少任何主体的观测值将导致该主体在分析中被忽略。)当 N 个主体中的每一个均具备两个以上的测量变量时,相关系数...

    当对 N 个主体中的每一个变量进行观测时,CORREL 工作表函数可计算两个测量变量之间的相关系数。(缺少任何主体的观测值将导致该主体在分析中被忽略。)当 N 个主体中的每一个均具备两个以上的测量变量时,相关系数分析工具则尤为有用。它会提供一个输出表格,即相关矩阵,显示应用到每对可能的测量变量的 CORREL函数值。
    相关系数与协方差相似,是两个测量变量之间关联变化程度的指标。与协方差不同的是,相关系数是比例值,因此它的值与用来表示两个测量变量的单位无关。(例如,如果两个测量变量为重量和高度,则将重量从英镑转换为公斤时,相关系数的值不会改变。)任何相关系数的值必须介于 -1 和 +1 之间(包括 -1 和 +1)
    可以使用相关系数分析工具来检验每对测量值变量,以便确定两个测量值变量是否趋向于同时变动,即,一个变量的较大值是否趋向于与另一个变量的较大值相关联(正相关);或者一个变量的较小值是否趋向于与另一个变量的较大值相关联(负相关);或者两个变量的值趋向于互不关联(相关系数近似于零)

     

    转载于:https://www.cnblogs.com/caiyishuai/p/9600850.html

    展开全文
  • 表格内班级和科目两列可点下拉框选择输入并自由组合,如班级选择不同班级,科目为同一科,则是该科成绩在各班之间的对比;如科目为“平均分”(总表须有该列且有数据),则是各班总体成绩对比;如班级选择同一班,...
  • 任务50: Excel抓取网页数据之搭建简单网站服务器及新建简单表格页面 任务51: 利用Excel自带功能抓取网页数据 任务52: VBA编程实现抓取网页源代码 任务53: VBA编程实现获取网页表格写入数据表 第6章: MySQL...
  • #寻找关联规则的函数 def find_rule(d, support, confidence, ms = u'--'): result = pd.DataFrame(index=['support', 'confidence']) #定义输出结果 support_series = 1.0*d.sum()/len(d) #支持度序列 ...
  • ChartGraph图表生成组件(电脑需安装Excel),用于将DataGridView表格(窗口程序)与GridView(网页程序)中的数据生成图表图片,然后再使用VB2008Print组件提供的图片打印功能(DrawImage)即可实现类似Excel的简单...
  • word使用技巧大全

    热门讨论 2011-03-18 20:37:53
    92、三种好学有用的Excel函数应用 96 94、字体大小任我调 96 95、复制Word格式又一法 96 96、大文档的页码编排 96 97、让你受益终身的10个word的使用技巧 97 98 其他常用技巧 98 99、Word中查找/替换通配符和代码 ...
  • Grid++Report6.0

    热门讨论 2015-01-14 16:21:19
    3、一个图表中可以混和显示多种不同类型的图形,如一个序列为柱图,另一个序列为曲线图。 4、Y轴可以显示双坐标轴,方便实现双轴柱状图等。 5、图例可以在下方显示,可以多栏显示。 6、增加图表数据记录集,图表数据...
  • 实例115 通过子查询关联数据 实例116 使用IN谓词限定查询范围 实例117 使用NOT IN子查询实现差集运算 实例118 使用NOT IN子查询实现反向查询 实例119 实现笛卡儿乘积查询 实例120 比较运算符引入子查询 实例121 在...
  • 实例115 通过子查询关联数据 实例116 使用IN谓词限定查询范围 实例117 使用NOT IN子查询实现差集运算 实例118 使用NOT IN子查询实现反向查询 实例119 实现笛卡儿乘积查询 实例120 比较运算符引入子查询 实例121 在...
  • 实例115 通过子查询关联数据 实例116 使用IN谓词限定查询范围 实例117 使用NOT IN子查询实现差集运算 实例118 使用NOT IN子查询实现反向查询 实例119 实现笛卡儿乘积查询 实例120 比较运算符引入子查询 实例121 在...
  • 实例265 在不同页面之间传递数据 348 实例266 SESSION购物车 350 实例267 解决SESSION中的常见问题 353 实例268 控制页面的访问权限 354 实例269 将SESSION数据存储到数据库中 355 实例270 SESSION更换聊天室界面 ...
  • 实例265 在不同页面之间传递数据 348 实例266 SESSION购物车 350 实例267 解决SESSION中的常见问题 353 实例268 控制页面的访问权限 354 实例269 将SESSION数据存储到数据库中 355 实例270 SESSION更换聊天室界面 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • 0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • 0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • 0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • 0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • 0123 使用MessageDlg函数显示不同风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理...
  • Java开发实战1200例.第2卷.part3

    热门讨论 2013-05-08 22:46:34
    实例004 CSS制作XML表格 8 实例005 XML中的提取节点字符串值 10 实例006 在XML内部定义DTD 12 实例007 在XML外部引用DTD 14 实例008 验证XML是否符合DTD的定义 15 实例009 在DTD中声明元素 16 实例010 在DTD中声明...
  • Java开发实战1200例.第2卷.part2

    热门讨论 2013-05-08 22:45:35
    实例004 CSS制作XML表格 8 实例005 XML中的提取节点字符串值 10 实例006 在XML内部定义DTD 12 实例007 在XML外部引用DTD 14 实例008 验证XML是否符合DTD的定义 15 实例009 在DTD中声明元素 16 实例010 在DTD中声明...
  • Java开发实战1200例.第2卷.part1

    热门讨论 2013-05-08 22:44:13
    实例004 CSS制作XML表格 8 实例005 XML中的提取节点字符串值 10 实例006 在XML内部定义DTD 12 实例007 在XML外部引用DTD 14 实例008 验证XML是否符合DTD的定义 15 实例009 在DTD中声明元素 16 实例010 在DTD中声明...
  • 实例041 根据下拉列表的值显示不同控件 58 2.4 文本框组件的应用 60 实例042 自动计算金额 60 实例043 设置文本框的只读属性 61 实例044 设置安全的密码域 63 实例045 限制多行文本域输入的字符个数 64 ...
  • 实例041 根据下拉列表的值显示不同控件 58 2.4 文本框组件的应用 60 实例042 自动计算金额 60 实例043 设置文本框的只读属性 61 实例044 设置安全的密码域 63 实例045 限制多行文本域输入的字符个数 64 ...
  • LINGO软件的学习

    2009-08-08 22:36:50
    每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

不同表格excel函数关联