我是编码新手,我必须处理一个大约有40000行50列的excel文档。我已经删除了大约35个对我来说无关紧要的规范栏。
在前14列中,有定义不同产品的值。这些定义可以是数字作为产品功率或序列号的规范,也可以是字母作为产品名称或原产地的规范。我已经使用个性化过滤器对我的所有列进行了排序,首先根据列1排序,然后根据列2排序,依此类推。。。在第15栏中,列出了产品首次发布的日期。
我想做的是比较每行的前14列,只得到最先启动的那一列。由于我删除了35栏,所以很多产品都是一样的(其他栏的规格不同)。我试过录制一个宏,或者在第16列中使用公式,如果列中的值不匹配,则返回一个值,但它总是与第一个值(第一行)进行比较,我似乎没有取得任何进展。
有人介意给我发几条去那里的建议吗?
非常感谢您的帮助(如果有任何英文错误,也很抱歉)
最后,我找到了一个解决方案,它是(因为我必须在几个excel文件中重复这一点):记录一个用于过滤的宏,类似于以下内容:
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range( _
"Tableau1[Car]") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range("Tableau1[Model]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range("Tableau1[Motor]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range("Tableau1[Carburant]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range( _
"Tableau1[Techno]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
等等
然后我创建了一个新列,它会说1或0,这取决于所有行是否与IF(AND(C2=C3;D2=D3; ... ; O2=03);1;0)
的公式相同,最后我在最后一列中输入了一个公式,说如果左边有0,则应该考虑此行的日期,如果没有,则会出现1900年1月1日的日期。然后通过过滤这一行并去掉1900年的日期,我得到了我想要的。
我希望它是清楚的。