Select right(Orders,3) as NewID from [表名] where GP9<> "" Order by NewID
没有用过excel来建立数据连接,也不清楚你这个是否满足SQL查询的格式。
如果是直接创建excel对象进行操作的话,就是简单的循环、判断以及字符串处理, 结果放在一个动态数组中,没有什么难的。
你自己先试着写代码,遇到具体的问题再来问。除非你什么都不懂,就是来求作业的。
程序代码:Dim cnn As New ADODB.Connection, RS As New ADODB.Recordset
List1.Clear
cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & App.Path & "\Excel表.xlsx" 'Excel表连接语句,Excel的文件名称自己修改
Sql = "select * from [Sheet1] Where GP9<>"" Order BY 编号" 'GP9列筛选非空项,筛选后编号列为升序排序
RS.Open Sql, cnn, 3, 2 '打开工作表
Do While Not RS.EOF
List1.AddItem Right(RS!Orders, 3) '提取Orders列的后3位数导入到VB的listbox
RS.MoveNext
Loop
RS.Close
cnn.Close

程序代码:
Private Sub Command1_Click()
On Error GoTo err
Dim Xls, Xlsbook, Xlssheet
Set Xls = CreateObject("Excel.Application")
Xls.Visible = False '
CommonDialog1.FileName="" '清除上次的记录
CommonDialog1.ShowOpen
if CommonDialog1.FileName="" then exit sub '没有指定文件,退出sub
Set Xlsbook = Xls.Workbooks.Open(CommonDialog1.FileName) '打开共公对话框,按“取消”也会导入上次导入的文件,不知是什么原因?也请版主帮忙修改,感谢了
Set Xlssheet = Xlsbook.Worksheets(1) '
Xlssheet.Activate '
N1=3 '根据你的截图是从第三行开始的
N2=10 '上限自己修改,或者给一个很大的数,在循环体中通过判断退出循环也可以
for i = N1 to N2
if Xlssheet.Cells(4, 7)<>"" then List1.AddItem right(Xlssheet.Cells(4, 2) ,3)
next i
Xls.Quit
Set Xlssheet = Nothing
Set Xlsbook = Nothing
Set Xls = Nothing
err:
Exit Sub
End Sub
[此贴子已经被作者于2017-7-26 23:56编辑过]