public sealed class Extentions
<ExtensionAttribute>
Public NotInheritable Class Extentions
Dim instance As Extentions
AddColumn(Object, Int32, Object) |
一维数组在中间插入数据 主要给二维数组插入列的时候内部使用 插入列为0则插入最后面,-1则插入到最前面 |
AddColumnT(IEnumerableT, FuncObject, Object) | 按指定的函数给二维数组右侧添加辅助列 |
AddColumnT(T, FuncObject, Object) |
按指定的函数给二维数组右侧添加辅助列 AddColumn(function(x) x.concat("").toarray)'右边添加一空列 |
AddColumnT(IEnumerableT, Int32, FuncObject, Int32, Object) |
按指定的函数给二维数组添加辅助列, 插入到指定列位置,函数里可代入当前行号参数 arr.Enumerable.AddColumn(1,Functioin(x,i) i)'在首列插入行号辅助列 插入列为0则插入最后面,-1则插入到最前面,其他按从1开始的列号插入到指定列之前 |
AddColumnT(IEnumerableT, Int32, FuncObject, Object) | 按1数的列号前面插入数据 按指定的函数 |
AddColumnT(T, Int32, FuncObject, Int32, Object) |
按指定的函数给二维数组添加辅助列 插入到指定列位置,函数里可代入当前行号参数 arr.AddColumn(1,Functioin(x,i) i)'在首列插入行号辅助列 注意行号按0开始 如果要保持二维数组的行号 请用arr.AddColumn(1,Functioin(x,i) i+1).ToArray2D 插入列为0则插入最后面,-1则插入到最前面,其他按从1开始的列号插入到指定列之前 |
AddColumnT(T, Int32, FuncObject, Object) | 二维数组在指定列插入数据 |
AddHeader(IEnumerableObject, String) |
二维数组集合添加表头 arr2D.AsEnumerable.AddHeader("a,b,c") |
AddHeaderT(IEnumerableT, IEnumerableObject) |
二维数组集合添加表头 arr2D.AsEnumerable.AddHeader({"a","b","c"}) |
AddRowNumbersT(IEnumerableT, Int32, Int32) |
把行号添加到辅助列,默认最后面,-1插入到最前面,可指定行号开始下标 arr.Enumerable.AddRowNumbers(-1)'在尾列插入行号辅助列 插入列为0则插入最后面,-1则插入到最前面,其他按从1开始的列号插入到指定列之前 |
AddRowNumbersT(T, Int32, Object) |
二维数组把行号添加到辅助列,插入位置默认为0到最后面,为-1插入到最前面,可指定行号开始下标 arr.AddRowNumbers'在尾列插入行号辅助列 arr.AddRowNumbers(-1,2)'行号从2下标开始 插入列为0则插入最后,-1则插入到最前,其他按从1开始的列号插入到指定列之前 |
AsEnumerable(Object) |
object类型的二维数组 用函数形式包装一下 然后就可以使用linq了 主要用于没有声明类型的object类型二维数组 用AsEnumerable(arr).where |
AsEnumerable(Range) |
单元格集合转为可枚举的对象 每一个枚举项为一个单元格或者一行一列单元格 注意如果按行遍历可用列用rng.Rows.AsEnumerable 遍历列用rng.Columns.AsEnumerable |
AsEnumerable(Sheets) | 工作表集合转为可使用LInq枚举集合 每一个枚举项为一个工作表 |
AsEnumerable(Workbooks) | 工作簿集合转为可枚举的对象 每一个枚举项为一个工作簿 |
AsEnumerable(Worksheets) | 工作表集合转为可使用LInq枚举集合 每一个枚举项为一个工作表 |
AsEnumerable(Object, String) | 把二维数组按指定的列名称转成动态对象Lit集合 后续可按对象集合形式访问 AsEnumerable(arr, Split("姓名,属性,数量", ",")) arr.Whers(function(x) x.数量>1) |
AsEnumerable(Object, String, String) | 把二维数组按指定的列名称转成动态对象Lit集合 后续可按对象集合形式访问 AsEnumerable(arr, "姓名,属性,数量") arr.Whers(function(x) x.数量>1) |
AsEnumerableT(T) | 二维数组实现可枚举的接口 查询时每一行作为一个下标从0开始的objec类型一维数组 方便使用Linq查询 |
AsEnumerableT(Object) |
按集合内部的item访问顺序 返回整个的可枚举对象 遍历的行为和for each item as 类型 in 集合一样 AsEnumerable(of Range)(obj).Where |
AsEnumerable2D | 单元格按行转为可使用Linq的二维数组,相当于rng.ToArray2D.AsEnumerable |
Average(IEnumerableObject) | Linq增强 二维数组集合的元素求平均值 无效值算0 |
Average(IEnumerableObject, String) | Linq增强 二维数组集合选择列求平均值 无效值算0 |
AverageT(IEnumerableT) | Linq增强 序列中的元素求平均值 无效值算0 |
CloseNoHide | 彻底关闭窗体 无视关闭事件中设置的隐藏 保证下次打开是新的实例 |
ConcatT(IEnumerableT) |
2维数组垂直方向合并为一个二维数组,注意列数要相同 可接受1个或者多个数组一起合并 crr= arr.Concat(brr).ToArray2D |
ConcatT(T, Object) |
一维数组垂直方向合并 arr.Concat(brr,crr).ToArray arr.Concat(brr,1,crr).ToArray'也可以单个值和数组混合添加 |
ConcatT(T, Object) |
2维数组垂直方向合并为一个二维数组,注意列数要相同 可接受1个或者多个数组一起合并 crr= arr.Concat(brr).ToArray2D |
CopyT | 二维数组克隆 方便批量操作保留源数据 |
CountT(T) | Linq增强 一维维数组总行数 |
CountT(T) | Linq增强 二维数组总行数 |
CreatKeyT |
主要用于拼接多个key用于配合ToDictionay字典查询 默认用@^@分隔 可自己指定分隔符 等价于 arr.TextJoin("@^@") CreatKey({"中国","2022年","1季度"})==>"中国@^@2022年@^@1季度" |
CreatRange(String, String) |
把序号简写模式的行列号转为单元格地址参数 如果本来就是字母+数字形式则直接返回
CreatRange("1,3,6")得到 "1:1,3:3,6:6" CreatRange("1,3-6","列")得到 "A:A,C:F" |
CreatRange(Int32, Int32, Int32, Int32) |
根据起止坐标参数得到一个单元格地址 CreatRange(1,1,2,3)得到 "A1:C2" 如果开始列为0则返回整行 开始行为0则返回整列 结束行列为0返回int最大值 |
Defult(DictionaryString, Object, String, Object) |
对值为一维数组的字典增强取数,key不存在则返回一个与字典中一样大小的空一维数组 主要用于二维数组生成key=>一维数组 类型的字典后续查询中key不存在的情况处理 |
DefultTkey, TValue(DictionaryTkey, TValue, Tkey, Object) |
字典取数时的空值处理 如果key不存在则返回值类型的默认值 也可按指定的结果返回 不局限与值类型 |
DistinctT(T) |
2维数组整行去重 arr.Distinct |
DistinctT(IEnumerableT) |
二维数组集合整行去重 arr.AsEnumerable.Distinct |
DistinctT(IEnumerableT, Int32) |
二维数组集合单列去重 arr.AsEnumerable.Distinct(3)'第3列去重 得到单列结果 |
DistinctT(T, Int32) |
2维数组选取某列去重结果为单列二维数组 arr.Distinct(2) 指定第2列 |
DistinctByT(IEnumerableT, String, String) |
二维数组集合去重 按指定列做关键字 arr.AsEnumerable.DistinctBy("F1,F2") 按 1列@^@2列 作为关键字去重 |
DistinctByT(T, String, String) |
2维数组去重 按指定列做关键字 arr.DistinctBy("1,2") 按 1列作为关键字去重 |
DistinctByTSource, TKey(IEnumerableTSource, FuncTSource, TKey) | Linq增强扩展,按指定规则去重 |
DistinctByT, TResult(T, String, FuncObject, TResult, String) |
二维数组集合去重 按指定列做关键字 可选结果列 arr.AsEnumerable.DistinctBy("F1,F2",Function(x) {x.F1,x.F2,x.F3}) 按 1列@^@2列 作为关键字去重 结果选取1 2 3列 |
EValuateVBNet |
增强的表达式计算 可支持超过255字符 不需要另外引用js库 EValuateVBNet("1+2+3^2+2*(5+6*2)") |
ExceptT(IEnumerableT, IEnumerableT) | 2个一样类型的二维数组集合求差集 结果对整行去重 这个用来覆盖系统本身默认方法 |
ExceptT1, T2(T1, T2) | 二维数组求差集 结果对整行去重 |
ExceptT1, T2(IEnumerableT1, IEnumerableT2) | 2个不同类型的二维数组集合求差集 结果对整行去重 |
Except2T(IEnumerableT, IEnumerableT) | |
Except2T1, T2(T1, T2) | 二维数组按整行求差集 A减去B 结果不去重 |
Except2T1, T2(IEnumerableT1, IEnumerableT2) | 二维数组集合按整行求差集 A减去B 结果不去重 |
F0T(T, Int32) | '按1下标访问0下标一维数组 |
F0T(T, String) | 按Excel的列号规则访问0下标的一维数组,A列为第1列开始 |
F1分组聚合表达式解析 | |
FillFormula | 将rng往下填充公式到有效区最大行 默认参照A列 可指定列 |
Flat(Object, Int32) |
多层对象摊平为一个单层结构 比如二维数组所有元素转为1维数组 常用于单行单列二维数组转一维数组可指定递归深度 |
FlatT(T) |
多层结构摊平为一个单层结构 比如二维数组所有元素转为1维数组 常用于单行单列二维数组转一维数组 |
FlatT(IEnumerableT) |
多层枚举摊平为一个单层结构 比如二维数组所有元素转为1维数组 常用于单行单列二维数组转一维数组 |
ForEachT(T, FuncT, T) |
一维数组ForEach加强,批量修改源数据 arr.ForEach(Function(x) x+1 )'所有元素+1 |
ForEachT(T, FuncT, T) |
二维数组的ForEach直接批量修改元素,可用字符串选择多列 arr.ForEach(Function(x) x+1) 原数组直接修改,返回值也等于修改后的原数组 |
ForEachT(IEnumerableT, FuncT, T) |
二维数组集合的ForEach批量修改 arr.ForEach(Function(x) x+1) 原数组集合直接修改,返回值也等于修改后的原数组 |
ForEachT(T, ActionT, Int32) |
一维数组ForEach加强,批量操作源数据 一般用来结合处理其他数据 Function(x,i) x为原数组,i为下标 0开始 序号从1开始 arr.ForEach(Function(x,i) debug.print(x(i)) )'依次输出元素 |
ForEachT(T, ActionT, Int32, Int32) |
二维数组的ForEach加强,可用字符串选择多列 注意总是从1开始 arr.ForEach(Sub(x,i,j) x(i,j)=x(i,j)+1)'所有元素+1 |
ForEachT(T, String, FuncT, T) |
一维数组ForEach加强,批量修改源数据 arr.ForEach("1,3,5",Function(x) x+1 )'第1,3,5个元素+1 |
ForEachT(T, String, FuncT, T) |
二维数组的ForEach直接批量修改元素,可用字符串选择多列 arr.ForEach("1,3-5", Function(x) x+1) 表示1,3,4,5列 统一加1 列如果传空值代表修改所有 原数组直接修改,返回值也等于修改后的原数组 |
ForEachT(IEnumerableT, String, ActionT, Int32, Int32) |
二维数组集合的ForEach加强,可用字符串选择多列 注意总是从1开始 用户方法依次传入 二维数组,行号,列号 可使用行列参数 下标按1算起 arr.ForEach("1,3-6",Function(x,i,j) x(i,j)=x(i,j)+1)'指定列元素+1 |
ForEachT(IEnumerableT, String, FuncT, T) |
二维数组集合的ForEach批量修改,可用字符串选择多列 arr.ForEach("1,3-5", Function(x) x+1) 表示1,3,4,5列 统一加1 列如果传空值代表修改所有 原数组集合可直接修改,返回值也等于修改后的原数组 |
ForEachT(T, String, ActionT, Int32) |
一维数组ForEach加强,批量操作源数据 一般用来结合处理其他数据 Function(x,i) x为原数组,i为下标 0开始 序号从1开始 arr.ForEach("1,3-5",Function(x,i) x(i)="") '清空第1 第3到第5个元素 |
ForEachT(T, String, ActionT, Int32, Int32) |
二维数组的ForEach加强,可用字符串选择多列 注意总是从1开始 用户方法依次传入 源数组,行号,列号 可使用行列参数 arr.ForEach("1,3-6",Sub(x,i,j) x(i,j)=x(i,j)+1)'指定列元素+1 |
GetPublicSubs | 获得程序集指定模块中所有可直接执行的Public Sub名称,多个模块用逗号分隔 |
GetShtByCodeName |
跨表不能使用shee1这种代码名称 郑广学 VBAYYDS.COM 一定要用codename跨表访问用下面的函数 返回指定工作簿对象的codename set sht=GetShtByCodeName(activeworkboook,"Sheet1") |
GroupByT(IEnumerableT, String, String) |
二维数组集合分组,按F1表达式选择列 arr.AsEnumerable.GroupBy("F1,F2") 按 1列@^@2列 合并的字符串关键字分组 |
GroupByT(T, String, String) |
2维数组分组,按F1表达式选择列 arr.GroupBy("F1,F2") 按 1列@^@2列 合并的字符串关键字分组 |
GroupIntoT(IEnumerableT, String, String, String) |
二维数组集合 分组+汇总 相当于Group().Select() arr.AsEnumerable.GroupInto("F1,F2","F1,F2,sum(4),count") '按第1,2列分组汇总 ,结果显示 1列,2列,第4列求和, 计数 |
GroupIntoT(T, String, String, String) |
二维数组分组+汇总 相当于Group().Select() arr.GroupInto("F1,F2","F1,F2,sum(4),count") '按第1,2列分组汇总 ,结果显示 1列,2列,第4列求和, 计数 |
InsertCols(IEnumerableObject, String, Object, Int32) |
二维数组集合指定位置插入列 可指定某个固定值 默认为空值 AddColumn("1,3")'第1列和第3列插入一列空列 也可接受二维数组参数 插入到指定位置 注意二维数组行数要与源数组一样 arr.AddColumn("1,3")'第1列和第3列插入一列空列 |
InsertColsT(T, String, Object, Int32) |
二维数组在指定位置插入列 可指定某个固定值 默认为空值 AddColumn("1,3")'第1列和第3列插入一列空列 |
InsertRowsT(IEnumerableT, String, Object, Int32) |
二维数组集合在指定行号位置插入多行 arr.InsertRows("2,4",2)'第2行和第4行前面插入2行空行 arr.InsertRows("1",brr)'把和arr列数一样的brr插入到指定行前面 arr.InsertRows("1",{1,2,3,4,5})'把一维数组作为一行插入到指定位置 |
InsertRowsT(T, String, Object, Int32) |
二维数组在指定行号位置插入空行 arr.InsertRows("2,4",2)'第2行和第4行前面插入2行空行 |
IntersectT1(IEnumerableT1, IEnumerableT1) | 二维数组集合求交集 结果对整行去重 主要是覆盖系统自带的方法 |
IntersectT1, T2(IEnumerableT1, IEnumerableT2) | 二维数组集合求交集 结果对整行去重 2个不一样的数组类型 |
IntersectT1, T2(T1, T2) | 二维数组求交集 结果对整行去重 |
Is2DArray | 判断一个变量是否二维数组 |
IsSingle | 判读一个变量是否一个单值类型或者字符串 也就是数值 日期 和字符 字符串 都属于单值类型 |
LastRow | 返回rng所在列的最后最后一行非空行号 |
LastRowRng | 返回rng所在列的最后一行非空单元格 |
LeftJoin(IEnumerableObject, IEnumerableObject, String, String, FuncObject, Object, Object, Object, Object) |
二维数组集合批量Vlookup,左表查右表,返回左表所有数据和右表首条数据 可接受逗号分隔的的F1关键字列号,调用更加方便 |
LeftJoin(IEnumerableObject, IEnumerableObject, String, String, String, Object, Object) |
二维数组集合批量Vlookup,左表查右表,返回左表所有数据和右表对应的首行数据 来源和结果均可接受逗号分隔的的F1关键字列号,调用更加方便 arr.LeftJoin(brr,1,1,"a.F1,a,F2,b.F2")'两表按首列连接 返回A表1 2列和B表第2列 arr.LeftJoin(brr,1,1,"a.Concat(b)")'两表按首尾连接 两表直接左右对接所有列 |
LeftJoinTKey(IEnumerableObject, IEnumerableObject, FuncObject, TKey, FuncObject, TKey, FuncObject, Object, Object, Object) |
二维数组集合批量Vlookup,左表查右表,返回左表所有数据和右表首条数据 右表找不到的返回空 全部按函数形式传参,最灵活的形式 结果选择器要返回一维数组 |
LeftJoinTKey(Object, Object, FuncObject, TKey, FuncObject, TKey, FuncObject, Object, Object, Object) |
二维数组批量Vlookup,左表查右表,返回左表所有数据和右表首条数据, 右表找不到的返回空 更灵活的关键字和结果选择器 |
LeftJoinT1, T2(T1, T2, String, String, FuncObject, Object, Object, Object, Object) |
二维数组批量Vlookup,左表查右表,返回左表所有数据和右表首条数据 右表找不到的返回空 可接受逗号分隔的的关键字列号,调用更加方便 arr.LeftJoin(brr,1,1,function(a,b) {a.F1,a.F2,b.F3})'a表查b表按按首列为关键字 返回A表前2列和b表后2列 |
LeftJoinT1, T2(T1, T2, String, String, String, Object, Object) |
二维数组批量Vlookup,左表查右表,返回左表所有数据和右表首条数据 右表找不到的返回空 可接受逗号分隔的的关键字列号,调用更加方便 arr.LeftJoin(brr,1,1,function(a,b) {a.F1,a.F2,b.F3})'a表查b表按按首列为关键字 返回A表前2列和b表后2列 |
LeftJoinTLeft, TRight, TKey, TResult(IEnumerableTLeft, IEnumerableTRight, FuncTLeft, TKey, FuncTRight, TKey, FuncTLeft, TRight, TResult) | 对象类型集合的批量Vlookup方法,左表查右表,返回左表所有数据和右表首条数据 右表找不到的返回空 |
LeftOutJoinT1, T2(IEnumerableT1, IEnumerableT2, String, String, FuncObject, Object, Object, Object, String) |
二维数组集合LeftOutJoin高级查询函数 返回左表所有行+右表匹配的行 有多行会重复展开多行 不写结果选择函数则默认A表左右列+B表左右列 |
LeftOutJoinT1, T2(T1, T2, String, String, FuncObject, Object, Object, Object, String) |
二维数组LeftOutJoin高级查询函数 返回左表所有行 右表匹配的行 有多行会重复展开多行 关键字列按逗号分隔字符串传入 |
LeftOutJoinT1, T2(T1, T2, String, String, String, Object, String) |
二维数组LeftOutJoin高级查询函数 返回左表所有行 右表匹配的行 有多行会重复展开多行 关键字列按逗号分隔字符串传入,结果按a.F1,b.F2形式书写 默认a+b整行返回 arr.LeftOutJoin(brr,1,1,"a.F1,b.F2") |
LeftOutJoinT1, T2, TKey(IEnumerableT1, IEnumerableT2, FuncObject, TKey, FuncObject, TKey, FuncObject, Object, Object, Object) | 二维数组集合LeftOutJoin一对多查询函数 返回左表所有行 右表匹配的行 有多行会重复展开多行 |
LeftOutJoinT1, T2, TKey(T1, T2, FuncObject, TKey, FuncObject, TKey, FuncObject, Object, Object, Object) | 二维数组LeftOutJoin高级查询函数 返回左表所有行 右表匹配的行 有多行会重复展开多行 |
LeftOutJoinTLeft, TRight, TKey, TResult(IEnumerableTLeft, IEnumerableTRight, FuncTLeft, TKey, FuncTRight, TKey, FuncTLeft, TRight, TResult) | 增强的对象类型Linq查询左连接方法, 按指定key和结果集函数返回 无匹配的返回默认值 |
Max(IEnumerableObject, String) | Linq增强 按指定列表达式求最大值 忽略无效值 |
MaxT(IEnumerableT) | Linq增强 序列快速求最大值 忽略无效值 |
MaxT(T, String) | Linq增强 二维数组选择列求最大值 忽略无效值 |
MaxRange | 某一起始行区域往下扩展到最大行 默认按所有列最大行 也可指定参考列 |
Min(IEnumerableObject, String) | Linq增强 一维数组枚举集合选择列求最小值 忽略无效值 |
MinT(IEnumerableT) | Linq增强 一维数组求最小值 忽略无效值 |
MinT(T, String) | Linq增强 二维数组选择列求最小值 忽略无效值 |
NoThingToEmpty | Nothing转空字符 避免代码中判断isnothing |
OrderByT(T) | 一维数组排序 省去写不必要的参数 默认按混合类型排序 |
OrderByT(IEnumerableT, FuncT, Object) | |
OrderByT(IEnumerableT, String) |
二维数组集合OrderBy升序,按F1表达式 arr.AsEnumerable.OrderBy(1)'1代表第1列 也可以用"F1" |
OrderByT(T, Object) | 一维数组排序 按指定的序列排序 不在序列中的元素按原位置依次后移 |
OrderByT(T, String) |
二维数组集合OrderBy升序,按F1表达式 arr.OrderBy(1)'1代表第1列 也可以用"F1",以及简单的运算(mid(F1,2)) |
OrderByT(IEnumerableT, FuncT, Object, Object) |
二维数组集合自定义排序 指定参考列函数以及自定义序列数组 |
OrderByT(IEnumerableT, String, String) |
二维数组集合自定义排序 指定参考列以及自定义序列 arr.Enumerable.OrderBy(1,{3,1,2})'1代表第1列 按后面数组顺序排列 不存在的按自然顺序排在最后 |
OrderByT(T, FuncT, Object, Object) |
二维数组自定义排序 指定参考列以及自定义序列 |
OrderByT(T, String, Object) |
二维数组自定义排序 指定参考列以及自定义序列 arr.OrderBy(1,{3,1,2})'1代表第1列 按后面数组顺序排列 不存在的按自然顺序排在最后 如果是字符串类型的可以用"三,一,二" 以逗号分隔形式传入 |
OrderByDescendingT(T) | 一维数组快速降序排序 省去写不必要的参数 |
OrderByDescendingT(IEnumerableT, String) | 二维数组集合OrderByDescending降序,arr.AsEnumerable.OrderByDescending("F1") 按F1降序 |
OrderByDescendingT(T, String) |
2维数组OrderByDescending降序 arr.OrderByDescending(1) 按F1降序二维数组排序集合 |
OutFullJoin(IEnumerableObject, IEnumerableObject, String, String, FuncObject, Object, Object, Object, String) |
二维数组集合的全连接,key接受逗号分隔的列号 左右无匹配项自动留空 |
OutFullJoin(IEnumerableObject, IEnumerableObject, String, String, String, Object, String) |
二维数组集合的全连接,key接受逗号分隔的列号 左右无匹配项自动留空 |
OutFullJoin(Object, Object, String, String, FuncObject, Object, Object, Object, String) |
二维数组全连接,key接受逗号分隔的列号,左右无匹配项自动留空 arr.OutFullJoin(brr,1,1,function(a,b) {a.f1,b.f2}) 不写结果选择器代表显示a+b所有列 |
OutFullJoinTkey(IEnumerableObject, IEnumerableObject, FuncObject, Tkey, FuncObject, Tkey, FuncObject, Object, Object, Object) |
二维数组集合的全链接 结果按指定关键字选择器连接 显示2表所有数据 不写结果选择器则默认显示A+B的所有列 |
QcTextJoin(IEnumerableObject) | Linq增强 对单列二维数组集合去重连接字符串,按逗号连接 arr.AsEnumerable.Select(1).QcTextJoin |
QcTextJoin(IEnumerableObject, Int32) | Linq增强 对二维数组集合选择列去重连接字符串,默认逗号连接 arr.AsEnumerable.QcTextJoin(1) |
QcTextJoin(IEnumerableObject, String) | Linq增强 对单列二维数组集合去重连接字符串,默认逗号连接 arr.AsEnumerable.Select(1).QcTextJoin("+") |
QcTextJoin(IEnumerableObject, String, FuncObject, Object) | 按列选择器函数的选择集去重连接字符串 |
QcTextJoin(IEnumerableObject, String, String) | Linq增强 二维数组集合的元素选择列执行字符串去重连接 |
QcTextJoinT(IEnumerableT) | Linq增强 对二维数组集合去重连接字符串,按逗号连接 |
QcTextJoinT(IEnumerableT, String) | Linq增强 对二维数组集合去重连接字符串,按分隔符连接 {1,2,3,1,2,4}.QcTextJoin |
RandBetween(Double, Double) | 生成一个m到n之前的随机小数 |
RandBetween(Int32, Int32) | 生成一个m到n之间的随机整数 |
RangeCopy |
二维数组集合按指定区域地址 整片区域复制粘贴来源 arr.RangeCopy("A:A",1)'A列写入1 arr.RangeCopy("A:A",brr)'A列写入brr 来源是二维数组 则按起始下标依次写入 来源是单个值 则直接写入 |
RangeForEachT(IEnumerableT, String, ActionT, Int32, Int32) |
二维数组集合按单元格地址形式批量修改数据 可带行号列号 arr.RangeForEach("1:1",Function(x,i,j) x + "=" + i + "-" + j) '1行区域加上行列号标记 注意传入函数的行号列号按1开始 |
RangeForEachT(IEnumerableT, String, FuncT, T) |
二维数组集合按单元格地址形式批量修改数据 arr.RangeForEach("A:A",Function(x) x + "-1") 'A列区域加后缀 |
RangeForEachT(T, String, ActionT, Int32, Int32) |
二维数组按单元格地址形式批量修改数据 arr.RangeForEach("1:1",Function(x,i,j) x(i,j) + "=" + i + "-" + j) '1行区域加上行列号标记 |
RangeForEachT1(T1, Object, FuncT1, Object, T1) | 2个一样大小的数组进行数组运算 |
RangeForEachT(T, String, FuncT, Object) |
二维数组按单元格地址形式批量修改数据 可带行号列号 arr.RangeForEach("A:A",Function(x) x + "-1") 'A列区域加后缀 |
RangeForEachT1(T1, String, Object, FuncT1, Object, T1) |
A数组指定的区域 与来源B运算后写回 与Excel中数组运算类似 B有4种情况 注意与Excel数组不同 原数组区域不会自动扩展 1 B是与区域同大小的数组 直接按2个数组元素运算 2 B是单个值 则单个值扩展为区域同大小数组后运算 3 B是单行数组且列数与区域一致 则扩展单行与区域行数一致后运算 4 B是单列数组且行数与区域一致 则扩展单列与区域列数一致后运算 |
RangeSelectT(IEnumerableT, String) |
二维数组按单元格地址形式选择区域得到新数组 arr.RangeSelect("A:C") '连续行1:2,连续列A:C 连续区域A1:C5 |
RangeSelectT(T, String) |
二维数组按单元格地址形式选择区域得到新数组 arr.RangeSelect("A1:C3")'按区域 arr.RangeSelect("1,2:3,5","行")'按不连续行竖向堆叠 arr.RangeSelect("1,2:3,5","列")'按不连续列 arr.RangeSelect("A:A,C:D,E:F","列")'按不连续列 结果数组从1下标开始 |
RangeSelectT(IEnumerableT, String, String) |
二维数组多行多列选择 RangeSelect("1,3-5,7","行")'选择指定的不连续行 得到结果数组 RangeSelect("1,3-5,7","列")'选择指定的不连续列 得到结果数组 |
RangeSelectT(T, String, String) |
二维数组多行多列选择 RangeSelect("1,3-5,7","行")'选择指定的不连续行 得到结果数组 RangeSelect("1,3-5","列")'选择指定的不连续列 得到结果数组 |
RangeSelectT(T, Int32, Int32, Int32, Int32) |
二维数组按行列坐标参数选择 0代表整行或者整列 arr.RangeSelect(1,1,2,3) 'A1:C2区域 arr.RangeSelect(1,0,3,0) '1:3行位置 arr.RangeSelect(0,1,0,26) 'A:Z列位置 |
RangeSelectsT(IEnumerableT, String) |
二维数组按单元格地址形式选择区域得到新数组 arr.RangeSelect("A1:C3,A5:C6") 后续可跟随.Cocat竖向合并多区域,.ZIP横向合并多区域 方便选择不连续区域得到新数组 |
RangeSelectsT(T, String) |
二维数组按单元格地址形式选择区域得到新数组 arr.RangeSelect("A1:C3,A5:C6") 后续可跟随.Cocat竖向合并多区域,.ZIP横向合并多区域 方便选择不连续区域得到新数组 |
RefreshExcel | 刷新单元格对应的Excel对象 解决调试时Excel写入数据后界面不刷新的问题 |
RegGet | 按正则表达式提取第一个命中的数据 |
RegMatchs | 按正则表达式返回正则匹配集合 |
RegReplace | 按正则表达式替换 |
RegTest | 按正则表达式判断是否匹配 |
RemoveCols(IEnumerableObject, String) | 二维数组集合删除指定列,从1开始数,使用逗号分隔的多列表达式"1,4-7,9" |
RemoveColsT(T, String) | 二维数组删除指定列,使用逗号分隔的多列表达式"1,4-7,9" |
RemoveRows(IEnumerableObject, String) | 二维数组集合删除指定行,从1开始数,使用逗号分隔的多行表达式"1,4-7,9" |
RemoveRowsT(T, String) | 二维数组删除指定行,使用逗号分隔的多行表达式"1,4-7,9" |
RepeatT(IEnumerableT, Int32) |
序列重复N次 arr.AsIEnumerable.Repeat(100) 原来的序列 重复100次得到一个大的新序列 主要用于测试 |
RepeatT(T, Int32) |
二维数组重复N次 arr.Repeat(100) 原来的数组重复100次得到一个大的新数组 主要用于测试 |
ResizeImage | 对图片进行缩放 设定新的尺寸 高度不设置的时候按宽度等比例缩放 |
RngCopyFormat | 格式刷 快速复制格式 |
Round | 按Excel表格函数中结果一致的四舍五入 因为默认的math.round是银行家算法 |
SafeUsedRange | 通过有效行列最大值来确定使用区域 总是从A1开始算, UsedRange有时候不准 |
SelectT(IEnumerableT, String) |
二维数组集合选择函数 F1表达式形式 arr.AsEnumerable.Select("F1,F3") '表示选取第1列和第3列 |
SelectT(IEnumerableIGroupingString, T, String) |
紧跟二维数组集合GroupBy之后的多列汇总快速选择函数 单独数字选列 sum(1) 代表对1列求和 可选函数为 sum(F1),count(),max(F1),min(F1),average(F1),TextJoin(F1),qcTextJoin(F1) 以上函数中的F1代表第1列 按实际需要变化 arr.GroupBy(1).Select("F1,sum(F2),count(),TextJoin(F2,'+')")'内部双引号用单引号代替 |
SelectT(T, FuncObject, Object) |
二维数组选择函数 最灵活的选择函数形式 arr.Select(Function(x) {x(0),x(1)})'注意选择函数返回值是一维数组类型 |
SelectT(T, String) |
二维数组选择函数 F1表达式形式 arr.Select("F1,F3") '表示选取第1列和第3列 |
SelectRowsT(IEnumerableT, String) | 二维数组按行切分数据 接受从1开始数的自由行号选择 "1,3-6,9" |
SelectRowsT(T, String) | 二维数组按行切分数据 接受从1开始数的自由行号选择 "1,3-6,9" |
SequenceEqualT(IEnumerableT, IEnumerableT) | 二维数组集合整体比较是否相等 按行为单位 系统默认的比较总是认为每行不相等 |
SequenceEqualT1, T2(IEnumerableT1, IEnumerableT2) | 二维数组集合整体比较是否相等 按行为单位 系统默认的比较总是认为每行不相等 |
SequenceEqualT1, T2(T1, T2) | 二维数组整体比较是否相等 按行为单位 系统默认的比较总是认为每行不相等 |
ShowAsVBAUserForm | 像vba窗口一样显示为Excel的子窗体 标题栏样式会有所不同 |
ShowInCenter | 当前窗体显示在一个指定窗体所在的屏幕中心 |
ShowVSTO | VSTO中显示在Excel窗口所在的屏幕中心 |
ShuffleT(IEnumerableT) | Linq增强扩展,序列随机洗牌 |
ShuffleT(T) | Linq增强扩展,二维数组随机洗牌,返回二维数组集合 |
SkipT | 跳过前N行 |
SkipWhileT | 跳过第一个满足条件前的行 |
SliceT(IEnumerableT, Int32, Int32, Int32, Int32) | 二维数组按行列偏移切分数据 类似于Excel函数offset 默认取出剩余所有行列 |
SliceT(T, Int32, Int32, Int32, Int32) | 二维数组按行列偏移切分数据 类似于Excel函数offset 默认取出剩余所有行列 |
Sum(IEnumerableObject, String) | Linq增强 二维数组集合选择列快速求和 忽略无效值,列选择为空则表示所有列求和 |
SumT(IEnumerableT) | Linq增强 一维数组快速求和 忽略无效值 |
SumT(T, String) | Linq增强 二维数组选择列快速求和 忽略无效值,列选择为空则表示所有列求和 |
Swap | 交换2个变量 |
TakeT | 取出前N行 |
TakeWhileT | 取出第一个不满足条件前面的行 |
TextJoin(IEnumerableObject) | Linq增强 对单列二维数组集合连接字符串,按逗号连接 希望以二维表形式输出多列字符串请用TextJoin2D arr.AsEnumerable.Select(1).TextJoin |
TextJoin(IEnumerableObject, Int32) | Linq增强 对二维数组集合指定列连接字符串,默认逗号连接 希望以二维表形式输出多列字符串请用TextJoin2D arr.AsEnumerable.Select(1).TextJoin |
TextJoin(IEnumerableObject, String) | Linq增强 对单列二维数组集合连接字符串,默认逗号连接 希望以二维表形式输出多列字符串请用TextJoin2D arr.AsEnumerable.Select(1).TextJoin |
TextJoin(IEnumerableObject, String, FuncObject, Object) | 按列选择器函数的选择集连接字符串 |
TextJoin(IEnumerableObject, String, String) | Linq增强 二维数组集合的元素选择列执行字符串连接 |
TextJoinT(IEnumerableT) | Linq增强 对一维数组连接字符串,按逗号连接 arr.AsEnumerable.TextJoin |
TextJoinT(IEnumerableT, String) | Linq增强 对一维数组连接字符串,按指定符号连接 arr.AsEnumerable.TextJoin("+") |
TextJoin2DT(T, String, Int32) | 2维数组输出为多行表格形式的字符串 方便快速的调试查看结果 |
TextJoin2DT(IEnumerableT, String, Int32, String) |
二维数组集合合并字符串输出 每行用换行符,一行内用空格 分隔符默认为空,会自动对齐每列宽度,数量大时计算较慢, 加速只需手动设定分隔符即可 |
ThenBy |
二维数组集合ThenBy 紧跟在一个排序后的二次排序 arr.OrderBy(1).ThenBy(2)'先按第2列排序再按第1列排序 |
ThenByDescending |
二维数组集合ThenByDescending,按F1表达式选择列 arr.OrderBy(1).ThenByDescending(2)'先按第2列排序再按第1列排序 |
ToArray1DT(IEnumerableT) | 二维数组集合类型转为一维数组 从0下标 |
ToArray1DT(T) | 二维数组转为一维数组 从0下标 |
ToArray2D(DataRow) | Datetable的行数组转为二维数组 |
ToArray2D(DataRowCollection) | Datetable的行集合转为2维数组方便输出到Excel区域 |
ToArray2D(IEnumerableDataRow) | Datetable的行数组转为2维数组方便输出到Excel区域 |
ToArray2D(IEnumerableObject) | 可枚举的对象集合转1下标的二维数组 |
ToArray2D(DataTable, Boolean) | Datetable转为二维数组 可选是否带表头 |
ToArray2D(Range, Boolean) |
单元格区域转数组 单个值也会装一个二维数组 不会弹出错误 可选参数 把空值nothing处理为字符串空 减少后续处理步骤 eg. Range("A1:A100").ToArray2D |
ToArray2DT(T) | 一维数组转为单行二维数组 |
ToArray2DT(IEnumerableT, Int32, Int32) |
单行数组或者列表形式的可枚举对象,包含List转为二维数组结构 默认为1小标 可指定 |
ToArray2DT(IEnumerableT, Int32, Int32) | 单行二维数组结构的list转为二维数组 |
ToArray2DT(IEnumerableListT, Int32, Int32) | 嵌套List转为二维数组 |
ToArray2DT(T, Int32, Int32) |
非1下标二维数组转为1下标 也可指定下标开始值 默认为1小标 可指定 |
ToDataTableT(T, Boolean) | 为 二维数组转为DateTable 默认按F1形式写入表头 如果HasHeader=true则按第一行写入表头 且第一行不算数据 |
ToDataTableT(IEnumerableT, Boolean) | 为 二维数组集合转为DateTable 默认按F1形式写入表头 如果HasHeader=true则按第一行写入表头 且第一行不算数据 |
ToDate | 统一把数值型或者字符串日期转为标准日期 无法识别返回日期最小值 |
ToDictinory(IEnumerableObject, String) |
二维数组集合整行去重生成字典 arr.AsEnumerable.ToDictinory 按整行作为关键字生成字典 |
ToDictinory(Object, String) |
2维数组整行去重生成字典 可指定分隔符 arr.ToDictinory 按整行作为关键字生成字典 |
ToDictinoryBy(IEnumerableObject, String, String, String) |
2维数组按指定列生成字典 结果集可指定列 arr.AsEnumerable.ToDictinoryBy("F1,F2","F1,F2,F4") 按 1列@^@2列 作为关键字生成字典 结果总是单行1维数组 |
ToDictinoryBy(Object, String, String, String) |
2维数组按指定列生成字典 可指定结果组合形式 arr.ToDictinoryBy("F1,F2",Function(x) x.F1) 按 1列@^@2列 作为关键字生成字典 结果取第一列 相当于dic(key)=arr(i,1) |
ToDictinoryByTResulet(IEnumerableObject, String, FuncObject, TResulet, String) |
2维数组集合按指定列生成字典 可指定结果组合形式 arr.AsEnumerable.ToDictinoryBy("F1,F2",Function(x) x.F1) 按 1列@^@2列 作为关键字生成字典 结果取第一列 相当于dic(key)=arr(1,1) |
ToDictinoryByTResulet(Object, String, FuncObject, TResulet, String) |
2维数组按指定列生成字典 可指定结果组合形式 arr.ToDictinoryBy("F1,F2",Function(x) x.F1) 按 1列@^@2列 作为关键字生成字典 结果取第一列 相当于dic(key)=arr(i,1) |
ToDictinoryByTSource, TKey(IEnumerableTSource, FuncTSource, TKey) | Linq增强扩展按指定key的规则生成一个字典 value为集合中不重复的单行元素 |
ToDictinoryByTSource, TKey, TValue(IEnumerableTSource, FuncTSource, TKey, FuncTSource, TValue) |
Linq增强扩展按指定key的规则生成一个字典 value为选择器函数选出的结果,方便后续取数 |
ToDouble | 转数值 主要是兼容日期型数据 按VBA规则转换 |
ToListT | 二维数组生成的List集合 一行作为一个0下标的一维数组 |
ToList2D | 二维数组生成的List集合 一行作为一个二维数组放入 |
ToListRowNumberT | 把二维数组的行号依次装入一个List列表 |
ToLookp(IEnumerableObject, FuncObject, String) |
二维数组集合去重生成1对多查询字典 每个key对应多行结构 arr.AsEnumerable.ToLookp("F1,F2") 按 1列@^@2列 作为关键字生成1对多查询字典 |
ToLookp(IEnumerableObject, String, String) |
二维数组集合去重生成1对多查询字典 每个key对应多行结构 arr.AsEnumerable.ToLookp("F1,F2") 按 1列@^@2列 作为关键字生成1对多查询字典 |
ToLookpT(T, String, String) |
2维数组去重生成1对多查询字典 每个key对应多行结构 arr.ToLookp(1) 按第1列 作为关键字生成字典 |
ToOADate | 统一把日期类型或者 转换错误返回0 |
ToObjectT(IEnumerableT) | 二维数组集合转为object类型 |
ToObjectT(T) | 一维数组转为object类型 |
ToObjectT(T) | 二维数组转为object类型 |
ToRange(Object, Range) | 数组写入到单元格区域,单个格子自动扩充区域 |
ToRangeT(IEnumerableT, Range) | 二维数组linq结果写入到单元格区域,单个格子自动扩充区域 |
ToRangeT(IEnumerableT, String) | 二维数组集合写入到单元格区域,单个格子自动扩充区域 |
ToRangeT(ListListT, String) | List嵌套集合写入到单元格区域,单个格子自动扩充区域 |
ToRangeT(T, Range) | 一维数组写入单元格区域 |
ToRangeT(T, Range) | 二维数组写入到单元格区域,单个格子自动扩充区域 |
ToRangeT(T, String) | 一维数组写入到行区域 |
ToRangeT(T, String) | 数组写入到单元格区域,单个格子自动扩充区域 |
ToStr | 转字符串 空对象返回空字符串 |
ToVal | 转数值 不成功返回0 日期值会按VBA规则转为对应的数值 |
UnionT(IEnumerableT, IEnumerableT) | 两个一样类型二维数组集合求并集 结果对整行去重 用来覆盖默认方法 |
UnionT(T, Object) |
二维数组垂直方向去重合并 可接受1个或者多个数组一起合并 arr.Union(brr,crr) |
UnionT1, T2(IEnumerableT1, IEnumerableT2) | 二维数组集合求并集 结果对整行去重 |
UnionT1, T2(T1, T2) | 二维数组求并集 结果对整行去重 |
WhereT(T, FuncObject, Boolean) | 二维数组Where筛选,使用条件函数函数,最灵活的形式 |
WhereT(T, FuncObject, Int32, Boolean) | 二维数组Where筛选,带行号参数的筛选函数 |
WhereT(T, String, Boolean) |
二维数组筛选函数 支持F1表达式形式 arr.where("F1>1") |
WhereT(IEnumerableT, String, Boolean) |
二维数组集合筛选函数 支持F1表达式形式 无需写Function arr.AsEnumerable.where("F1>1") |
Zip(IEnumerableObject, Int32) | 横向扩展N倍 |
ZipT(IEnumerableT) | 二维数组批量左右合并 传入多个数组 |
ZipT(T, Object) | 二维数组批量左右合并 参数数组可传入多个数组 |
ZipT1, T2(IEnumerableT1, IEnumerableT2) |
二维数组集合左右合并,要2个行数一样多 arr.AsEnumerable.Zip(brr.AsEnumerable) |
ZipT1, T2(T1, T2) |
2维数组左右合并,要2个行数一样多 arr.Zip(brr) |
ZipRepeatT(IEnumerableT, Int32) |
二维数组横向重复N次 arr.AsIEnumerable.RepeatZip(100) 原来的序列 向右重复100次得到一个大的新序列 主要用于测试 |
ZipRepeatT(T, Int32) | 横向复制 |
过滤非数值T(IEnumerableT) | |
过滤非数值T(IEnumerableT) | 嵌套的一维数组 会摊平成普通一维数组 方便后续计算 |
列号转字母 | |
序号生成器(String) |
按字符串形式的序号表达式得到列号数组 逗号分隔多组,每组里可用1-3表示1到3列 "1,3-5,6,8"结果为1,3,4,5,6,8 "A:C,E:E"'结果为1,2,3,5 |
序号生成器(Int32, Int32, Int32) | 返回开始到结束的一维数组序列 |
字母转列号 |