怎么用COLUMNS查找两列相同数值 vb中list怎样水平滚动两列?
vb中list怎样水平滚动两列?
在“属性”窗口中选择Columns属性,将属性值更改为1,它将变为水平滚动。
两列。
python与vba处理数据的区别?
有一个csv文件,包含CNUM和COMPANY两列,数据包含空行和重复行。
要求:
1)删除空白行;
2)重复的行数据只保留一行有效数据;
3)将公司列的名称更改为company _ new ;
4)增加六列,即C _ COL, d _ COL ;e _ COL ;f _ COL ;G _ COL和 H _ COL。
首先,使用python熊猫来处理:将熊猫作为pd导入
将numpy作为np导入
从熊猫进口数据框,系列
d:
文件_对象打开(文件路径)
Df_csv(file_obj) #读取csv文件并创建数据帧。
Df (columns [cnum,company,c _ col,d _ col,e _ col,f _ col,g _ col,h _ col],fill _ valu:公司_新},到位真)#修改栏目名称。
Ddff.dropna (axis0,howall) #删除NAN,即文件中的空行。
Df [CNUM] df [cnum]。as type (int32) #将cnum列的数据类型指定为int32。
ddf . drop _ duplicates(subset[cnum,company _ new],keep first) #删除重复行。
_csv(newpath,indexFalse,encodingGBK)
文件_()
如果__nam:
fil: users 12078 desktoppythocnum _ company . CSV
fil: users 12078 desktoppythocnum _ COMPANY _ output . CSV
处理数据(文件ath,文件保存路径)
二、用VBA应对:选项基数1
选项显式
副总管()
出错时转到错误处理
将wb标注为工作簿
将wb_out标注为工作簿
Dim sht作为工作表
Dim sht_out作为工作表
变暗rng As范围
将已使用的行作为字节显示
Dim usedrows_out As Byte
Dim dict_cnum_company作为宾语
Dim字符串文件路径作为字符串
Dim str_n:赋值
str _ file _ path c: users 12078 desktoppythocnum _ company . CSV
str _ new _ file _ path c: users 12078 desktoptythocnum _ COMPANY _ output . CSV
设置WB checkAndAttachWorkbook(str _ file _ path)
设置sht (CNUM_COMPANY)
设置wb_out
创建一个CSV文件
设置sht_out wb_(CNUM_COMPANY_OUTPUT)
设置dict_cnum_company CreateObject(脚本。字典)
usedrows(getlastvidrow(sht,A),getlastvidrow(sht,B))
将标题COMPANY重命名为Company_New,删除空白的重复行/行。
Dim cnum_company作为字符串
cnum _公司
对于sht中的每个rng。范围(A1,A已用行数)
If ((0,1)。价值)公司T母鸡
(0, 1).价值公司_新建
如果…就会结束
cnum_company - (0,1)。价值
If (cnum_company) -而不是dict_cnum_company。存在(- (0,1)。值)那么
dict_cnum_ - (0,1)。值,
如果…就会结束
下一个rng
循环dict的关键字,将关键字拆分成cnum数组和company数组。
Dim index_dict As Byte
Dim arr_cnum()
Dim arr _公司()
对于index_dict 0到UBound(dict_cnum_)
ReDim Preserve arr_cnum(1到UBound(dict_cnum_) 1)
ReDim Preserve arr_Company(1到UBound(dict_cnum_) 1)
arr _ cnum(index _ dict 1)Split(dict _ cnum _()(index _ dict),-)(0)
arr _ Company(index _ dict 1)Split(dict _ cnum _()(index _ dict),-)(1)
索引_字典
然后
将数组的值赋给单元格。
嘘_出。Range(A1,A UBound(arr_cnum)) (arr_cnum)
嘘_出。范围(B1,B下限(arr_Company)) (arr_Company)
添加6列以输出CSV fil:
Dim arr_columns()作为变量
arr_columns数组(C_col,D_col,E_col,F_col,G_col,H_col)
嘘_出。范围(C1:H1) arr_columns
调用checkAndCloseWorkbook(str _ file _ path,False)
呼叫检查和clos:
调用checkAndCloseWorkbook(str _ file _ path,False)
调用checkAndCloseWorkbook(str _ new _ file _ path,False)
末端接头
辅助功能:
获取工作表中第N列的最后一行
函数getLastValidRow(in_ws作为工作表,in_col作为字符串)
getLastValidRow in_ws。单元格(in_,in_col)。结束(xlUp)。排
结束功能
函数checkAndAttachWorkbook(in _ WB _ path As String)作为工作簿
将wb标注为工作簿
将mywb显示为字符串
mywb in_wb_path
对于工作簿中的每个wb
如果LCase(wb。全名)LCase(mywb) Then
设置checkAndAttachWorkbook wb
退出功能
如果…就会结束
然后
设置wb (in_wb_path,Updat:0)
设置checkAndAttachWorkbook wb
结束功能
函数checkAndCloseWorkbook(in _ WB _ path为字符串,in_saved为布尔值)
将wb标注为工作簿
将mywb显示为字符串
mywb in_wb_path
对于工作簿中的每个wb
如果LCase(wb。全名)LCase(mywb) Then
savechang:in _ saved
退出功能
如果…就会结束
然后
结束功能
三、输出结果:
两种方法的输出结果是相同的:
四、对比总结:
Python pand因为内置了许多数据处理方法,所以我们不 t不需要反复做轮子,用起来非常方便,代码也简单很多。
Excel VBA通过使用数组、字典等数据结构(实际需求中,数据量往往很大,所以有些地方没有直接遍历单元格的方法),以及处理字符串、数组、字典的多种方法来处理这个需求。文件的操作也很复杂。一旦出现错误,比python更难调试。代码已经尽可能优化了,但还是远远超过Python。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。