2017-03-09 9 views
1

からのデータとの最後の行を取得し、私は特定の列からのデータで最後の行を取得しようとしていると私のコードを実行しているとき、私は次のエラーを取得しています:C#相互運用機能は、特定の列

にできません

WorksheetFunctionクラスのCOUNTAプロパティ

var xlApp = new Microsoft.Office.Interop.Excel.Application(); 
var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; 
var wsConfig = wb.Sheets["Config"]; 

var usedRows = xlApp.WorksheetFunction.CountA(wsConfig.Columns[9]); 

はまた、次のコードを試してみましたが、返します:

HRESULTからの例外:0x800A03EC

var usedRows = wsConfig.Range["I1", wsConfig.Cells[1, wsConfig.Rows.Count]].End(Excel.XlDirection.xlDown).Value; 

例:

列I
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| |

=>usedRows = 5私は

+0

エラーメッセージはちょうどあなたが 'CountA'が正しくない引数を渡す機能を意味します。私はそれが有効な 'Excel.Range'を期待していると信じています。それが9列目の場合、 'CountA 'に渡す' wsConfig.Columns( "私:私") 'であるべきだと思うが、手渡すプロジェクトがないので推測している。 – Equalsk

+0

ああ、あなたがここを見れば、受け入れられた答えはあなたが望むものかもしれないと思う:http://stackoverflow.com/questions/5411355/how-do-i-get-an-entire-column-in-used-range – Equalsk

+0

私はそれを試みたが、それは51(総行数)を返します。 – Valip

答えて

1

列上のデータと5行があるので、列(例えばA)で最後に使用された行を取得するための古典的な方法は次のとおりです。

last = Sheets("Sheet1").Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row 

言うどの'ワークシートの最後の使用可能な行(バージョン間の変更)から作業することは、値が最後の行のセルをヒットするまで上に移動します。

あなたはと(列Iのために)あなたの例ではでこれを書くことができます。

var usedRows = wsConfig.Range["I" + wsConfig.Rows.Count.ToString()].End(Excel.XlDirection.xlUp).Row;