2009-03-26 22 views
1

リスト: - "問題シート"(ワークシート)。Excel VBAマクロ

私は毎日サイズが異なる問題の問題(行)のリストを表すExcelシートを持っています(例:より多い行ま​​たは少ない行)。 各行に名前が割り当てられています。 割り当てられた名前は、常に「問題シート」の同じ列「M」にあります。 個別の割り当て名は、必ずしも毎日表示されるわけではありません。また、特定の日に複数の行に複数回表示されることもあります。

問題シートのM列に表示される各名前が「一意リスト」ワークシートに1回記録されるような、割り当て名の一意リスト(ワークシート)を作成するマクロが既にあります。 同じマクロは、割り当て名の一意の発生ごとに(同じブック内に)単一の新しいワークシートを作成します。 割り当て名は、新しい個々のワークシート・タブに自動的に記録されます。

必須: - メインの「問題シート」の列Mをチェックするマクロ。 問題シートの列Mに特定の割り当て名があるすべての行/問題について、同じ名前のワークシートと割り当て名を一致させ、「問題シート」から行全体の詳細をコピー&ペーストして既存のブックの正しい(同じ割り当てられた名前)ワークシートの最初の空白行。 問題シートのすべての行に対してこのルーチンを繰り返す必要があります。

+0

かもしれませんがExcelを使用するためにあなたを強制的に特別な理由はありますか?このようなことはSQLで簡単に達成できます。データベースはどこから来てもデータが疑わしい場所です。おそらく、これはDBの中で直ちに解決できますか? – Tomalak

+0

データが最初に改ざんされてから、メールショットの前にかなりの書式設定が行われるため、書式設定の段階はSQLを使用して問題があると言われています.VBAではこれらの手順をVBAで行うことができますこれを達成しましたが、今私はメールショットで立ち往生しています –

+0

これはVBAでは可能です。しかし、それはうまくいくためのお尻の痛みになります。通常は、SQLで適切なものをSELECTし、それをExcelに入れてフォーマットします。 Excelで最初に配置し、VBAでSQLクエリを模倣しようとしないでください。 – Tomalak

答えて

0

順序は重要ではない場合は、これが最善の策

Sub x() 
    Dim rngProbs As Range 
    With ThisWorkbook.Worksheets("Problem Sheet") 
     Set rngProbs = .Range("M1", .Range("M1").End(xlDown)) 
    End With 

    Dim r As Range 


    For Each r In rngProbs 
     r.EntireRow.Copy 
     ThisWorkbook.Worksheets(r.Text).Rows(1).EntireRow.Insert 
    Next r 

End Sub 
+0

答えは完全に動作し、各シートのタイトルバーが既に存在しないように行(1)を行(2)に変更しました。 –