0

SQL と VB.NET を使用して動的に生成した Excel スプレッドシートがあります。列数 (2) は変わりませんが、ユーザーが指定したデータに応じてレコード数が変わります。SQL が実行され、スプレッドシートがいっぱいになったら、列 2 にレコードの合計 (int 値) を表示するテーブルの下部にレコードを追加する必要があります。

何かのようなもの:

xlSheet.Range(bottom record, column1) = "合計" xlSheet.Range(bottom record, column2) = 列 2 の上記のすべてのレコードの合計

VS 2010 と Excel 2010 を使用しています。

私のテーブルはこれに似ています:

*Group*     *Refered Cases*
4H BOSS                 0
4H BSG                  0
4H SALES AND MKTG       0
ACCOUNTS RECEIVABLE     0
ASSET MANAGEMENT        0
AUDIT                   0
BOSS                    0
CORPORATE BSG           0
CUSTOMER SUPPORT        0
NETWORK ENGINEERING     0
PRODUCTION ENGINEERING  0
PRODUCTION OPERATIONS   0
SECURITY                0
SNFAL PRODUCT TEAM      0
VOICE SERVICES          0
XEROX                   0

答え:

OK、次のコードを使用して、最初の列の最後のセルを動的に見つけ、「TOTAL」をセルに入力し、それに応じてフォーマットすることができました。

Dim lTotalRows As Long, lTotalCols As Long
    lTotalRows = xlSheet.UsedRange.Rows.Count
    lTotalCols = xlSheet.UsedRange.Columns.Count

With xlSheet.Range("A" & (lTotalRows + 1).ToString) 'Dynamically finds the last cell of the first column, and sets it equal to "Total" and formats the cell
    .Value = "TOTAL"
    .Interior.ColorIndex = 41 'Cell Background Changed to Black
    .Columns("A:B").EntireColumn.AutoFit()
    With .Font
        .ColorIndex = 2 'Cell Font Changed to White
        .Bold = True
        .Underline = Excel.XlUnderlineStyle.xlUnderlineStyleSingle
    End With
End With

次のコードを使用して、2 番目の列の最後のセルを 2 番目の列のすべてのセルの合計に等しく設定することができました。

Dim totals as Integer
For Each dr As DataRow In dt.Rows
    totals += dr.Item(1)
Next

xlSheet.Range("B" & (lTotalRows + 1).ToString).Value = totals
4

1 に答える 1

0

合計行数がわかっている場合は、次の式を列の一番下のセルに挿入できます。サンプル データには、一番上のヘッダー行を除いて 16 行が表示されます。

=SUM(INDIRECT(ADDRESS(ROW()-16,COLUMN())):INDIRECT(ADDRESS(ROW()-1,COLUMN())))
于 2012-06-01T23:40:38.680 に答える