养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

VBA如何基于指定列对单元格区域重新排序

时间:2024-10-25 02:25:21

在数据处理时,有时需要根据指定列的内容进行重新排序。比如样品测试时,假设存在5个测碍测行臬试点,测试点2和测试点3无需测,在作报告时,一般会保留测试点2和测试点3的位置,测试数据为罗嵯脶姥空。假定有一组测试数据,要根据“品号”列和给定的测试点数目(暂定5个),进行重新排序。下面介绍如何通过VBA代码,进行任务的实现。

VBA如何基于指定列对单元格区域重新排序

工具/原料

ThinkpadE470

Windows10家庭中文版21H1

office365

方法/步骤

1、在Excel文件中,同时按下组合按钮【alt+F11】,打开vba编辑器。

VBA如何基于指定列对单元格区域重新排序

2、在编辑器窗口中,插入一个模块,然后在模块内输入如下代码。OptionExplic坡纠课柩itSubsample_sort烫喇霰嘴()'根据品号列重新排序Dimrow_iniAsInteger,row_testAsInteger,numberAsIntegerDimname_sampleAsString,iiAsInteger,flagAsIntegerDimrow_tempAsInteger,row_objectAsIntegerrow_ini=2'测试数据从第2行开始(第1行是标题行)row_test=Cells(Rows.Count,3).End(xlUp).Row'测试数据最后一行的行号number=5'测试点数目,包括无需测的测试点。name_sample="SAM21-123"'样品名称'1.根据“品号”列查找测试数据Forii=1Tonumberrow_temp=row_test+1+iiCells(row_temp,3)="SAM21-123"&"-"&CStr(ii)'输入样品单号Cells(row_temp,4).Formula="=IFERROR(MATCH(C"&CStr(row_temp)&",C:C,0),10000)"'例:"=IFERROR(MATCH(C6,C:C,0),10000)"row_object=Cells(row_temp,4).ValueIfCells(row_temp,4).Value<=row_testThen'复制目标行到指定区域Rows(row_object).CopyRows(row_temp).SelectActiveSheet.PasteElseCells(row_temp,4).Formula=""EndIfNextii'2.覆盖原有的测试数据Rows(row_test+2&":"&row_test+2+number+row_test-row_ini+1).CopyRows(row_ini).SelectActiveSheet.PasteMsgBox"Done!"ExitSubEndSub

VBA如何基于指定列对单元格区域重新排序

3、在"测试数据"表内,运行上述的宏命令,就可以得到经过重新排序后的测试数据。

VBA如何基于指定列对单元格区域重新排序

© 一点知识