2012-04-04 16 views
3

私は複雑なスプレッドシートを作成しています。ここでは、毎週ネットワークごとに異なる顧客にコールを監視できます。私は2つのシート、 "raw_data"と "Sheet1"を持っています。複雑なExcelマクロ

私たちのサーバーから "Sheet1"へのデータを垂直レイアウトにコピーし、不要なデータ行を取り除くマクロを実行します。

"raw-data"では、コールボリュームは、水平レイアウトの顧客名に従ってソートされます。このシートでは、次の空きセルの列Aを検索し、新しい行を挿入し、シーケンスの次の日付を追加します(19/03/2012、26/03/2012、...)、最後に "Sheet1"からデータをコピーし、正しい列見出しの下に値を貼り付けます( "Sheet1"の内容を削除しますが、 "raw_data"に値を保持します)。

私はVBAがなく、長いリストの最後に、特定の時点で新しい行を挿入するために知っているここで私が持っているコードです:。

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

は、すべてのヘルプは素晴らしいことだ、あるいは同様の例は素晴らしいことですだから自分で編集して学ぶことができるので

ありがとうございます!

マーク

UPDATE

私は、正しい形式でのコメントにコードを追加していないようでした。だからここに私は今、何をしたいか

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の値は週単位で削除されます。これは可能ですか、それとも私は頭の中でそれを夢見ていますか?

+0

次の空白行に到達するためにエンド(XLdown)を試してみてください。 – Dan

答えて

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 

のようなものを使用することができます。

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

Runtime error '91' on macro execution

HTH

シド

+0

マーク、これは本当に理解するのが難しいです。必要に応じて、質問を編集して、そこにコードを投稿することができます:) –