首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA自定义函数:一次查找获取指定表格多个

标签:VBA,自定义函数 这个自定义函数来自于forum.ozgrid.com,可以在指定表查找多个返回一组结果,而这些结果可以传递给另一个函数。...(IDs(i), Table, TargetColumn, False) Next MultiVLookup = Result End Function 其中,参数是ReferenceIDs代表要查找...;参数Table是包含查找内容表;参数TargetColumn代表表返回结果列;参数Delimeter代表分隔符,可选,取决于第一个参数。...例如,下图1所示数据,表名为MyTable。...图1 要查找MyTable表A、B、D对应第2列求和,可使用公式: =SUM(MultiVLookup("A,B,D",MyTable,2)) 或者,将要查找放在一个单元格,然后使用公式来查找相应

10310

SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作

SET/SET效率高,建立主表和建表索引查询表一般不排序, 2. BY语句,DATA步,BY语句规定分组变量,用于控制SET,MERGE,UPDATE或MODIFY语句。...variable-n>; 其中: Variable为分类、排序或索引变量; GROUPFORMAT为用格式化分组; NOTSORTED...应用:1)根据某些需求条件更新特定变量2)对主数据某些变量做历史累加 UPDATE语句后面只能跟两个数据集,最靠近UPDATE语句是主数据集,随后是更新数据集。...PUT应用:输出结果到LOG窗口,调试程序运行过程变量产生中间。输出结果到外部文件。 6.@和@@应用/单尾符和双尾符 一般单尾符应用在PUT,双尾符应用在INPUT。...单尾符:一个数据行用多个PUT语句输出数据,或多个INPUT语句输入数据。 双尾符:一个输入数据行含有多个观测,用INPUT语句读入,或者把多个观测输出到一个数据行,用PUT。

65650
您找到你想要的搜索结果了吗?
是的
没有找到

SAS Says】基础篇:6. 开发数据(二)

6.11 output:写多维数据集 6.12 output:将一个观测变成多个 6.13 proc transpose:将观测转变为变量 6.14 使用SAS内置变量 ---- 【SAS Says...下面的代码创建了一个Friday新数据集,将sales数据集中day属于Friday观测复制,创建了新变量total: ?...注意K086销售记录缺失,因为sales data没有关于其记录。 6.5 一对多匹配合并数据 ? 一对多合并是指一个数据集中一个观测可以与另一个数据集中多个观测匹配。...往常之中,记住变量会被下一个观测改写,但这里变量只在第一次迭代时候读取,并为所有观测记住,这一技术适用于没有匹配变量情况下,将一个单个观测合并到多个观测。...6.12 output:将一个观测变成多个 ? SAS通常在数据步结尾将一个观测写入数据,但可以写入多个观测,在DO loop或单独使用output语句。

2.1K30

SAS Says】基础篇:复制、堆叠、合并数据

下面的代码创建了一个Friday新数据集,将sales数据集中day属于Friday观测复制,创建了新变量total: ?...语句中,可以指定一个或多个变量,让SAS进行排序。...注意K086销售记录缺失,因为sales data没有关于其记录。 5. 一对多匹配合并数据 ? 一对多合并是指一个数据集中一个观测可以与另一个数据集中多个观测匹配。...当你想比较每一个观测和一组变量均值时,可以先使用proc means计算统计量,保存输出文件,再与原始文件合并。 例子 有一份关于鞋子销量数据,变量为鞋子风格、类型、销量。...往常之中,记住变量会被下一个观测改写,但这里变量只在第一次迭代时候读取,并为所有观测记住,这一技术适用于没有匹配变量情况下,将一个单个观测合并到多个观测

6.3K50

SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测操作、SAS数据集管理

SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测操作、SAS数据集管理 1....SAS观测操作 OUTPUT 输出当前在PDV观测,继续无条件自行下面的语句。 IF 如果满足条件,继续执行后面语句;否则,返回DATA步开头。...STOP 停止输出当前PDV观测退出DATA步。 WHERE语句在PDV之前执行。 5. 数据集管理主要包括数据集纵向拼接、转置、排序、比较、复制、重命名、删除等操作。...通过SAS过程步完成,常用过程步。 APPEND 把来自SAS数据集所以数据添加到另外一个SAS数据集后面。 SORT 对原有SAS数据集安装一个或多个变量进行排序。...TRANSPOSE 对原有的SAS数据集进行行列转置 CONTENTS 输出SAS逻辑库成员描述信息 DATASETS 管理SAS逻辑库成员,可以完成对SAS逻辑库所有成员进行输出列表

1.6K100

SAS︱数据索引、数据集常用操作(set、where、merge、append)

纵向合并数据集*/ /*by,控制set merge modify update,分组变量*/ /*merge,横向合并数据集*/ /*update,更新SAS数据集*/ /*modify,修改SAS数据集...其中,sex='M'等于,也可以写成sex eq 'M',其中eq代表等于(此外ne代表不等于) (4)set-in 临时变量 /*set-in-临时单个变量*/ /*可以说是SAS跟R最大区别的一点就是...(2)where在缺失应用 /*where选中缺失*/ Where x is missing; where x is null; /* 数值型变量,定位缺失,is.na()*/ 有点像R...Where x;/*选择数值变量x非0非缺失观测*/ Where x and y; /*字符型变量,选择观测*/ Where x ne ''; 还有一些比较特殊写法,譬如where x就直接代表选中了非...其中需要注意是,D_an代表D和an其中可以容纳一个字符;而D%an代表D和an可以容纳多个字符。

6.6K20

SAS Says】基础篇:5. 开发数据(一)

本节目录: 开发数据 5.1 创建并重新定义变量 5.2 使用SAS函数 5.3 使用IF-THEN语句 5.4 用IF-THEN语句将观测分组 5.5 构造子集 5.6 处理SAS日期数据 5.7...由于观测susanpeas变量出现了缺失,因此这个观测total和pertom变量也出现了缺失。...例子 如下数据包含了模型名字、年份、制造商和颜色: ? 下面的代码从cars.dat原始文件读取数据,使用IF-THEN语句填满缺失创建一个新变量Status ? 输出结果如下: ?...5.4 用IF-THEN语句将观测分组 IF THEN/ELSE一般形式为: IF condition THEN action; ELSE IF condition THEN action; ELSE...5.8 使用retain和sum语句 当开始数据步每一个观测迭代时,SAS会先将所有变量值设为缺失,再通过input和分配语句改变。

1.7K40

SAS Says】基础篇:开发数据

本节目录: 开发数据 3.1 创建并重新定义变量 3.2 使用SAS函数 3.3 使用IF-THEN语句 3.4 用IF-THEN语句将观测分组 3.5 构造子集 3.6 处理SAS日期数据 3.7...由于观测susanpeas变量出现了缺失,因此这个观测total和pertom变量也出现了缺失。...例子 如下数据包含了模型名字、年份、制造商和颜色: ? 下面的代码从cars.dat原始文件读取数据,使用IF-THEN语句填满缺失创建一个新变量Status ? 输出结果如下: ?...3.4 用IF-THEN语句将观测分组 IF THEN/ELSE一般形式为: IF condition THEN action; ELSE IF condition THEN action; ELSE...3.8 使用retain和sum语句 当开始数据步每一个观测迭代时,SAS会先将所有变量值设为缺失,再通过input和分配语句改变。

2K60

SAS Says】基础篇:2. 读取数据

读取非标准格式数据 2.8 用可选变量形式 2.9 混合读取方式 2.10 读取凌乱原始数据 2.11 跨行观测读取方式 2.12 一行有多个观测文件读取 2.13 读始部分观测 2.14...List方式下,SAS自动找到非空格区域开始读取;column方式下,SAS读取你所指定特定位置;informatted方式下,SAS不理会指示器标准,只是依次读取。...行指示器 斜线/:告诉SAS跳至原始数据第二行;#n:跳至第n行,n代表原始数据观测行数(#2则让SAS跳至某观测第二行),#n不能用来回跳。...从日志可以看出,虽然原始原件占了9行,但只有三个观测。 输出结果如下: ? 2.12 一行有多个观测读取 ?...OBS= OBS=告诉SAS一直读取到哪一行位置,注意是行而不是观测(有的观测占据多行)比如,如下原始数据文件,结尾处还有一句不需要数据说明时。就需要这个选项: ?

5.3K60

SAS Says】基础篇:读取数据(下)

本节目录: 读取数据(下) 2.12 一行有多个观测原始文件读取 2.13 读取原始数据部分观测 2.14 用infile语句中选项控制输入 2.15 用数据步读取分隔符文件 2.16 用导入过程...数据集目录 ---- 读取数据(下) 2.12 一行有多个观测原始文件读取 ?...2.13 读取原始数据部分观测 ? 有时候只需要读取原始数据部分观测,比如只需要年鉴女性数据、收入超过10万的人口数据等。...此时数据读取方式如下:在SAS读取某一行观测时,首先读取足够变量以便决定是否需要保留此行观测。...OBS= OBS=告诉SAS一直读取到哪一行位置,注意是行而不是观测(有的观测占据多行)比如,如下原始数据文件,结尾处还有一句不需要数据说明时。就需要这个选项: ?

3.8K60

SAS里玩穿越 | 【SAS Says·扩展篇】IML:穿越 | 数说·语言

一直以来,大众了解SAS都是数据集操作,使用方法是数据步和过程步。但其实,SAS这个庞大系统还隐藏了另一个平行世界——IML,在这个世界里,你需要一个像操作MATLAB一样矩阵思维。...(1)列出观测 List 观测范围 var {选择变量名} where (条件) ; (红色背景是必须要有的,黄色背景是可以省略观测范围 All:所有观测 Current:当前观测...Next:下一个观测 After:当前观测之后所有观测 Point 记录号:指定观测 以逻辑库SAShelpair数据集为例: ?...(2)删除观测 use 数据集; edit 数据集; delete 观测范围 where(条件); (红色背景是必须要有的,黄色背景是可以省略,下同,不再重复) 观测范围和上面的差不多:...All 删除所有观测。 有一份10人score数据,数据集名字叫score ? 现在想删除第二个人James记录。

2.3K60

SAS hash对象,提高编程效率和性能

01 SAS hash对象是一种强大数据步骤编程技术,它可以在内存快速地存储和检索数据,实现表查找、合并、拼接和排序等操作。...SAS hash对象是一种数据结构,它包含了一个数组,用于将一个或多个与一个键(例如,员工ID)关联起来。SAS hash对象是在数据步骤创建和使用,不适用于任何SAS过程。...由于内存操作通常比磁盘上操作更快,用户通常会体验到更快和更高效查找操作 。此外,SAS hash对象还可以根据一个键来将一个数据集分割成多个数据集。 SAS hash对象有什么缺点?...使用defineKey方法来定义一个或多个键变量,用于匹配两个数据集中观测 。 使用defineData方法来定义要从合并或拼接数据集中保留变量 。...使用defineDone方法来完成hash对象定义 。 使用find方法来在hash对象查找与当前数据步骤键变量相匹配观测 。 使用output方法来输出合并或拼接后结果数据集 。

38620

SAS PDV:程序数据向量秘密

在执行阶段,SAS会按照以下步骤循环处理每一行数据: 从DATA语句开始,将_N_设为1,并在每次迭代后加1 将PDV所有变量设为缺失初始化自动变量 用INPUT语句将一行数据从输入缓存区读入到...PDV(如果读取是外部文件) 用SET、MERGE、MODIFY或UPDATE语句将一条观测SAS数据集读入到PDV(如果读取SAS数据集) 执行其他语句(如赋值语句、条件语句、循环语句等)...我们想用SAS读入这个文件,创建一个新变量,表示员工薪水。...,初始化自动变量 用INPUT语句将一行数据从输入缓存区读入到PDV 执行赋值语句salary = eno * 1000; 将PDV变量的当前输出到新建数据集中 判断是否到达输入文件结尾,...、LAST.等,来实现一些复杂逻辑和功能。例如,在DATA步中使用_N_来计数观测数;使用_ERROR_来检测错误;使用FIRST.和LAST.来处理分组数据。

38020

SAS Says】基础篇:SAS软件入门(上)

变量和观测 在传统SAS术语,数据包括变量和观测。采用相关数据库术语,SAS数据集也被叫做表、观测也被叫做行、变量也被叫做列,你可以看到下面这个包含一些数据表。 ?...字符变量缺失用空格表示,数值变量缺失用句号(.)表示。上表,体重第五个观测缺失,用.表示。姓名第六个观测缺失,用空格表示。...而“一个观测一个观测执行”就不是那么容易理解。这意味着SAS先读取一个观测,然后对这个观测进行数据步所有语句(当然也是一行一行),然后再读取第二个观测执行。...SAS对你这个观测执行数据步,如果数据步一直运行到结束而没有错误,SAS会把当前观测写入一个新、输出数据集中,返回到数据步开头,读取第二个观测进行执行。...在批处理或后台模式下,你程序存于一个文件SAS会自动执行,你不需要在电脑旁,如果程序多,SAS会将这个程序进行排队等待。这种模式通常用在大型电脑中,因此通常可以一次性处理多个任务。

3.6K80

SAS Says】基础篇:update、output、transpose以及相关数据深层操作

使用in=option追踪观测 4. output:写多维数据集 5. output:将一个观测变成多个 6. proc transpose:将观测转变为变量 7....下面的例子,SAS创建了两个临时变量:InAnimals和InHabitat: ? 该变量只存在于现在过程步。 3. 使用in=option追踪观测 ?...每一个数据步结尾都有一个暗含output语句,它告诉SAS在处理下一个观测之前,将当前观测写入输出数据集中。...5. output:将一个观测变成多个 ? SAS通常在数据步结尾将一个观测写入数据,但可以写入多个观测,在DO loop或单独使用output语句。...下面代码读取数据,按照finishing time排序,另一个数据步创建新变量place,赋给它当前_N_,print过程产生finishers列表: ? ?

3.6K70

SAS里玩穿越 | 【SAS Says·扩展篇】IML:5.穿越

但其实,SAS这个庞大系统还隐藏了另一个平行世界——IML,在这个世界里,你需要一个像操作MATLAB一样矩阵思维。...(1)列出观测 List 观测范围 var {选择变量名} where (条件) ; (红色背景是必须要有的,黄色背景是可以省略观测范围 All:所有观测 Current:当前观测...Next:下一个观测 After:当前观测之后所有观测 Point 记录号:指定观测 以逻辑库SAShelpair数据集为例: ?...(2)删除观测 use 数据集; edit 数据集; delete 观测范围 where(条件); (红色背景是必须要有的,黄色背景是可以省略,下同,不再重复) 观测范围和上面的差不多: Point...All 删除所有观测。 有一份10人score数据,数据集名字叫score ? 现在想删除第二个人James记录。

1.7K70

SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础

SAS系统简介 1.1 SAS是先编译后执行语言,data步标志着编译开始。 数据指针:当前内存缓存区,输入数据所在位置。...数据集结构 一个SAS数据集是数据和数据集信息集合。...数据:由观测加变量组成,行为观测列为变量;数据集信息:包含该数据集名字、创建时间、在逻辑库成员类型等。...2.4 SAS索引 SAS索引存储SAS数据集中一些变量和与该对应观测进行直接定位指针系统。...数据获取与数据集操作 3.1 数据集操作常用语句 DATA 创建SAS数据集;SET语句 读取数据行,纵向合并SAS数据集;BY语句 控制SET、MERGE、MODIFY、UPDATE语句,建立变量。

60820

SAS Says】基础篇:1. SAS软件入门

变量和观测 在传统SAS术语,数据包括变量和观测。采用相关数据库术语,SAS数据集也被叫做表、观测也被叫做行、变量也被叫做列,你可以看到下面这个包含一些数据表。 ?...字符变量缺失用空格表示,数值变量缺失用句号(.)表示。上表,体重第五个观测缺失,用.表示。姓名第六个观测缺失,用空格表示。...而“一个观测一个观测执行”就不是那么容易理解。这意味着SAS先读取一个观测,然后对这个观测进行数据步所有语句(当然也是一行一行),然后再读取第二个观测执行。...每次执行SAS只有一个观测。 我们将SAS执行图景放慢:SAS从你数据集中读取一个观测。...SAS对你这个观测执行数据步,如果数据步一直运行到结束而没有错误,SAS会把当前观测写入一个新、输出数据集中,返回到数据步开头,读取第二个观测进行执行。

4.9K81

SAS Says】基础篇:3. 描述数据

下面的代码告诉SAS对数据messy排序,并将排序后数据存在neat: PROC SORT DATA=messy OUT=neat; 选项nodupkey告诉SAS排序时删除重复,比如: PROC...因为SAS认为缺失是比字符串和数值都小,所以排在了第一位。另外,由于whale shark 40数据有两个,故因为nodupkey选项而被删除一个。说明可见日志: ?...3.8 定制一个简单报告 数据步可以帮助在报告完成一些个性需求,比如一页打印一个观测等。...数值变量VS字符串变量 从proc report得到报告类型,部分依据于使用数值类型。只要报告起码有一个字符串变量,默认报告就是每个观测一行。...Order:为每个观测都创建一行,且行排列是是按照指定变量来顺序。

3.7K101

SAS Says】基础篇:读取数据(

2.11 跨行观测读取方式 ---- 读取数据() 2.6 column input读取按固定列排列原始数据 当一些原始数据之间没有空格分开,或者没用用句号代替缺失时,list input...List方式下,SAS自动找到非空格区域开始读取;column方式下,SAS读取你所指定特定位置;informatted方式下,SAS不理会指示器标准,只是依次读取。...2.11 跨行观测读取方式 一般原始文件中一行代表一个观测,有时会出现一个观测跨行情况。...行指示器 斜线/:告诉SAS跳至原始数据第二行;#n:跳至第n行,n代表原始数据观测行数(#2则让SAS跳至某观测第二行),#n不能用来回跳。...从日志可以看出,虽然原始原件占了9行,但只有三个观测。 输出结果如下: ?----

2.5K50
领券