1

我在 excel 表中有如下值。

ID
12_001
12_008
12_010

13_001

如何找到这些值的最大值。我需要结果为“13_001”。有谁能够帮我?

我试过这样

string ExcelConnection = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" + Filepath + " ; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
OleDbDataAdapter Id = new OleDbDataAdapter("SELECT MAX(ID) FROM [Sheet1$A2:A4]", ExcelConnection);
DataSet id = new DataSet();
Id.Fill(id);
4

4 回答 4

2
you can use the range if u need 

    range rng = new range; 
int64  dblMax =0; rng = Range("a1", Range("a65536").End(xlUp)) ;
dblMax = Application.WorksheetFunction.Max(rng) ;
return dblMax + 1 
于 2013-07-10T05:45:53.750 回答
0

基本上,您可以通过将字符串视为文本,按字母顺序降序排序,然后从列 ID 检索第一条记录来获得所需的输出。

下面的代码应该这样做:

        string ExcelConnection = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" + Filepath + " ; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
        string Command = "SELECT ID FROM [Sheet1$]";

        try
        {
            OleDbConnection conn = new OleDbConnection(ExcelConnection);
            OleDbCommand cmd = new OleDbCommand();
            OleDbDataAdapter da = new OleDbDataAdapter();

            using (conn)
            {
                conn.Open();
                cmd = new OleDbCommand(Command, conn);
                da = new OleDbDataAdapter(cmd);


                DataSet id = new DataSet();
                da.Fill(id);

                DataTable idtable = id.Tables[0];
                idtable.DefaultView.Sort = idtable.Columns[0].ColumnName + " " + "DESC";
                idtable = idtable.DefaultView.ToTable();
                Console.WriteLine(idtable.Rows[0][0]);
                conn.Close();
            }
        }
        catch (Exception ex)
        {
        }
于 2013-07-10T06:09:35.747 回答
0

这充其量可以通过宏来完成。在下面的列表中,我在 Range A1:A10 中有不同的值,例如: 12_001 56_021 89_001 10_002 41_005 36_021 95_002 25_025 32-015 85-002 我正在通过以下代码提取最大值。最大值显示在消息框中:

For i = 1 To 10
If Val(Left(Cells(i, 1), 2)) > Max Then
Max = Val(Left(Cells(i, 1), 2))
Strg = Max & Right(Cells(i, 1), Len(Cells(i, 1)) - 2)
End If
Next
MsgBox Strg
于 2013-07-10T07:43:00.363 回答
0

如果你可以发送功能,你可以使用这个

=MAX(INDEX(Name1!$C$2:$V$2000,0,MATCH(Overview!S$1,ID!$C$1:$V$1,0)))
于 2013-07-10T05:31:18.117 回答