我在网页上列出了大量备件,供应商每周提供给我。我只是将.xlsx文件上传到web文件夹,页面填充自己。对象不是以任何方式更改文件,因此不涉及任何工作。在我使用的经典ASP中
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};"&_
"DBQ=" & Server.MapPath(file) & ";"
strSQL = "SELECT * FROM A1:D10000 order by ""Item number"" ASC"
Set objRS=objConn.Execute(strSQL)
项目编号是可以是数字或字母数字的部件号 问题是订单不正确
例如
X1
X11
x111
X2
X22
X222
什么时候应该
X1
X2
X11
X22
X111
X222
我理解为什么会发生这种情况但无法找到使订单正确的方法
其他一切都运行良好,但客户不希望在x200之前找到X1000并且它已经引起了一些问题
非常感谢您提供的任何帮助
答案 0 :(得分:0)
对于Excel中的这类问题,一种解决方案是使用“帮助列”将数据拆分为数字和alpha部分,然后对辅助列进行排序。
根据您的真实数据的样子,您可以使用以下公式:
=LEFT(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789"))-1)
=MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789")),99)
答案 1 :(得分:0)
编辑:使用我的完整测试代码和输入/输出进行更新。 我在Excel中运行它,但我刚刚在一个简单的ASP页面中确认了它...
Sub TestQuery()
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
Dim sPath
Dim sSQL As String
sSQL = " select [Item Number], [Name] from " & _
" D22:E34 order by 1*right([Item Number],len([Item Number])-1) "
sPath = ThisWorkbook.Path & "\" & ThisWorkbook.Name
oConn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"DBQ=" & sPath & ";"
Set oRS = oConn.Execute(sSQL)
If Not oRS.EOF And Not oRS.BOF Then
ToSheet Sheet1.Range("H22"), oRS
Else
MsgBox "No records found"
End If
End Sub
Sub ToSheet(rng, rs)
Dim f, i
i = 0
For Each f In rs.Fields
rng.Offset(0, i).Value = f.Name
i = i + 1
Next f
rng.Offset(1, 0).CopyFromRecordset rs
End Sub