2012-03-10 12 views
0

以下は作業コードです。私は、検索条件の開始点をwsSheet.Cells [65000、columnNumber]のように変更することで、検索基準で問題を解決できることを理解しました。しかしこれは本当の解決策ではありません。Excelの検索操作はC#で最初の行をスキップします

[検索]操作をExcelシートの最初の行から開始する別の方法はありますか?

public static string FindFirstStringInColumn(Excel.Workbook wbBook, string strSheet, string strSearchMe, string strColumnLetter) 

    { 
     Excel.Worksheet wsSheet = null; 
     wsSheet = (Excel.Worksheet)wbBook.Worksheets[strSheet]; 
     Excel.Range currentFind = null; 


     Excel.Range range = (Excel.Range)wsSheet.Columns[strColumnLetter, Type.Missing]; 
     int columnNumber = ExcelCOM.GetColumnNumber(strColumnLetter); 
     //~~> Search for strSearchMe 
     currentFind = range.Find(strSearchMe, 
         wsSheet.Cells[65000, columnNumber], 
         Excel.XlFindLookIn.xlValues, 
         Excel.XlLookAt.xlPart, 
         Excel.XlSearchOrder.xlByRows, 
         Excel.XlSearchDirection.xlNext, 
         false, 
         false, 
         false); 

     if (currentFind != null) 
     { 
      string sAddress = currentFind.get_Address(false, false, Excel.XlReferenceStyle.xlA1, false, false); 
      //~~> Display the found Address 
      return (sAddress).ToString(); 
     } 
     else 
     { 
      return ("Nothing found"); 
     } 

    } 
+0

ソートされる範囲を指定するExcel関数について考えていますが、列名が最初の行にあるかどうかを確認するメッセージが表示されます... – DOK

答えて

0

このパラメータはオプションです。名前付きパラメータを使用して指定しないでください。範囲内の「最上位」セルから開始してください。私が収集できていたものから

+0

本当ですか? [MSDN](http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.find(v = office.11​​).aspx)は、「これを指定しないと引数は、範囲の左上隅にある**セルの後に**検索を開始します。 –

+0

しかし、それは包み込みます - 左上が最初の結果で、最後の結果ではないなら、あなたは答えが良いです。 – Hogan

0

、少なくともハードコードされた65000を取り除く、および他の範囲で正しく動作するはずですあなたの「後」のパラメータ値、など

range.Cells[range.Count]

を指定してみてください列全体よりも

関連する問題