3

私は複雑なスプレッド シートを作成しています。このスプレッド シートでは、ネットワークを介してさまざまな顧客への通話を毎週監視できます。「raw_data」と「Sheet1」の 2 つのシートがあります。

サーバーから "Sheet1" に垂直レイアウトにデータをコピーし、不要なデータ行を削除するマクロを実行します。

「生データ」では、通話量を顧客名に従って水平レイアウトでソートする必要があります。このシートに必要なのは、列 A を検索して次の空いているセルを探し、新しい行を挿入し、シーケンス内の次の日付 (19/03/2012、26/03/) を追加するマクロが割り当てられた少なくとも 1 つのボタンです。 2012、...)、最後に「Sheet1」からデータをコピーし、正しい列ヘッダーの下に値を貼り付けます(「Sheet1」の内容を削除したいが、値は「raw_data」に保持します)。

特定のポイントに新しい行を挿入するVBAを知っていますが、長いリストの最後には挿入しません。ここに私が持っているコードがあります:

Sub Insertrow()
    Rows("33:33").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

どんな助けでも素晴らしいでしょうし、同様の例でさえ素晴らしいので、自分で編集して学ぶことができます.

ありがとう!

マーク

アップデート

コードを正しい形式でコメントに追加できなかったようです。では、また行きます...

Sub Insertrow()
        'Selects next empty cell in column A
        ActiveWindow.ScrollRow = 2
        Range("A2").Select
        Selection.End(xlDown).Offset(1, 0).Select
        'Inputs the next date
        Dim n As Long, k As Long
        Application.ScreenUpdating = False
        Rng = 1
        Range(ActiveCell, ActiveCell.Offset(Val(Rng) - 1, 0)).EntireRow.Insert
        k = ActiveCell.Offset(-1, 0).Row
        'copies the formula 1 cell from the left (Column A) to the row below
        n = Cells(k, 1).End(xlToLeft).Column
        Range(Cells(k, 1), Cells(k + Val(Rng), n)).FillDown
End Sub

ここでやりたいことは、Sheet1 の列を検索して、特定のテキスト文字列 (raw_data のヘッダー) を検索し、コード (上記) から生成された日付の下にあるこの行の値をコピーすることです。おそらく、上記のようなコードやネストされた if ステートメントを使用できますが、シート 1 の値は毎週削除されます。これは可能ですか、それとも頭の中で夢想しているだけですか?

4

1 に答える 1

2

データが表形式でない場合 (つまりlistobject、行を挿入する必要がない場合) は、単純に最後の行に書き込むことができます。最後の行にデータを書き込むには、次のようなものを使用できます

Sub Sample()
    Dim ws As Worksheet
    Dim wslRow As Long

    Set ws = Sheets("Sheet1")

    wslRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row + 1

    ws.Range.Range("A" & wslRow).Value = "Blah Blah"
End Sub

必要に応じて、日付列のデータを並べ替えることができます。

データが表形式の場合は、この手法を使用してデータを並べ替えることができます。

マクロ実行時の実行時エラー '91'

HTH

シド

于 2012-04-04T11:21:37.130 に答える