簡體   English   中英

從excel中的一列獲取最小和最大日期。 C#

[英]Get minimum and maximum date from a column in excel. C#

我正在嘗試在Excel工作表的列中返回最小和最大日期。 我有一個我在VBA中創建的程序,我正在用C#重寫,但對此部分不太確定。 我使用的原始代碼是;

WB.Activate
    DataInputRows = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
    ActiveSheet.Range("S2:T" & Cells(Rows.Count, "A").End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
    ActiveSheet.Range("V2:V" & Cells(Rows.Count, "A").End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
    ActiveSheet.Range("A1:" & LastColumn & Cells(Rows.Count, "A").End(xlUp).Row).Sort _
        Key1:=Range("T1"), Header:=xlYes

SYear = Format(WorksheetFunction.Min(Range("T1:T" & DataInputRows)), "dd/MM/yyyy")
EYear = Format(WorksheetFunction.Max(Range("T1:T" & DataInputRows)), "dd/MM/yyyy")

我已經覆蓋了排序和格式區域,但是我無法完全確定“ SYear =”或“ EYear =”的含義。

有誰知道從列中查找最小值和最大值的“簡單”方法?

到目前為止,我在C#中擁有的代碼是;

                            DataInputRows = InputSheet.UsedRange.Rows.Count;
                        Excel.Range rng = (Excel.Range)OutputSheet.Cells[2, 19];
                        rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                        rng = (Excel.Range)OutputSheet.Cells[2, 20];
                        rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                        rng = (Excel.Range)OutputSheet.Cells[2, 22];
                        rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                        SourceRange.Sort(SourceRange.Columns[20, Type.Missing], Excel.XlSortOrder.xlAscending, Type.Missing, Type.Missing, Excel.XlSortOrder.xlAscending, Type.Missing, Excel.XlSortOrder.xlAscending, Excel.XlYesNoGuess.xlYes, Type.Missing, Type.Missing, Excel.XlSortOrientation.xlSortColumns, Excel.XlSortMethod.xlPinYin, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal);

                        var SYear = (This is where i need the minimum value of column T (20))

得到它了!!

                    DataInputRows = InputSheet.UsedRange.Rows.Count;
                    Excel.Range rng = (Excel.Range)InputSheet.Cells[2, 19];
                    rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                    rng = (Excel.Range)InputSheet.Cells[2, 20];
                    rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                    rng = (Excel.Range)InputSheet.Cells[2, 22];
                    rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                    SourceRange.Sort(SourceRange.Columns[20, Type.Missing], Excel.XlSortOrder.xlAscending, Type.Missing, Type.Missing, Excel.XlSortOrder.xlAscending, Type.Missing, Excel.XlSortOrder.xlAscending, Excel.XlYesNoGuess.xlYes, Type.Missing, Type.Missing, Excel.XlSortOrientation.xlSortColumns, Excel.XlSortMethod.xlPinYin, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal);


                    Excel.WorksheetFunction wsf = ObjApp.WorksheetFunction;

                    rng = (Excel.Range)InputSheet.Cells[2, 20];
                    var SYear = wsf.Min(rng);
                    DateTime dt = DateTime.FromOADate(SYear);
                    MessageBox.Show(dt.ToString());

感謝Ralph的快速入門。

所以@Ralph讓我思考。 我很確定它不會像看起來那樣困難,並且命令應該足夠相似。 所以我做了一些挖掘,發現我哪里出了問題(或更具體地說,我沒有去哪里)。 編輯了我的代碼,以顯示可以工作的變體,以防萬一將來有人需要它,並為拉爾夫+1了大腦的腳步。 :)

DataInputRows = InputSheet.UsedRange.Rows.Count;
                Excel.Range rng = (Excel.Range)InputSheet.Cells[2, 19];
                rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                rng = (Excel.Range)InputSheet.Cells[2, 20];
                rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                rng = (Excel.Range)InputSheet.Cells[2, 22];
                rng.EntireColumn.NumberFormat = "dd/MM/yyyy";
                SourceRange.Sort(SourceRange.Columns[20, Type.Missing], Excel.XlSortOrder.xlAscending, Type.Missing, Type.Missing, Excel.XlSortOrder.xlAscending, Type.Missing, Excel.XlSortOrder.xlAscending, Excel.XlYesNoGuess.xlYes, Type.Missing, Type.Missing, Excel.XlSortOrientation.xlSortColumns, Excel.XlSortMethod.xlPinYin, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal);


                Excel.WorksheetFunction wsf = ObjApp.WorksheetFunction;

                rng = (Excel.Range)InputSheet.Cells[2, 20];
                var SYear = wsf.Min(rng);
                DateTime dt = DateTime.FromOADate(SYear);
                MessageBox.Show(dt.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM