• ベストアンサー

Excel2007で名簿管理をしています。

Excel2007で名簿管理をしています。 名簿管理には名簿マスタ・各住所ごとのシートがあります。 項目など形式はすべてのシート同じです。 名簿マスタ:全データ存在しており、入力もここに行います 各住所シート:1シートに1か所の住所を割り当てており、10か所(10シート分)あります。 現在、必要な時に「名簿マスタ」より 並び替え→抽出(住所で)→各シートに貼り付け を行っております。 ですが、10シート分となりますと結構手間がかかります。 これをマクロ等で簡素化することはできますでしょうか? なにかございましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • qyukip
  • ベストアンサー率40% (13/32)
回答No.3

ボタンを押下したときに実行されるマクロの例です。 Private Sub CommandButton1_Click() Dim objWorkSheet As Worksheet Dim SheetName As String Dim i As Integer Dim iRowNo As Integer '書き込むシートの行番号 Application.ScreenUpdating = False '画面の更新OFF '各ワークシート名取得 For Each objWorkSheet In Worksheets iRowNo = 1 SheetName = objWorkSheet.Name If SheetName <> "名簿マスタ" Then '名簿マスタは処理させない  For i = 2 To UsedRange.Rows.Count   If InStr(1, Cells(i, 2).Value, SheetName) <> 0 Then '住所の抽出     iRowNo = iRowNo + 1     Rows(i).Copy '該当の行をコピー     Worksheets(SheetName).Rows(iRowNo).PasteSpecial '住所シートへ貼り付け    End If   Next End If Next End Sub この処理が実行されると全シート分の処理が行われます。 前提条件としては1行目がタイトル行であることと 住所シート名を検索キーにしているので住所シート名が「北海道」等になっていることです。 参考にしていただければ幸いです。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

以下のような操作をマクロの記録で記録してみてください。 データベースシートの表示タブで「マクロの記録」をクリックし、適当な名前を付けてOKします。 次いで、「データ」「フィルタ」「テキストフィルタ」で住所の列でたとえば「北海道」「から始まる」を指定し、この抽出されたデータよりも大きめの範囲(空白行を含めて元のデータ数の2倍の行まで)を選択し、右クリック「コピー」し、北海道シートで右クリック「貼り付け」します。 この抽出操作をすべての都道府県で行い(マクロコードの編集でもOK)、最後にデータベースシートでフィルタモードを解除し、マクロの記録を終了してください。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

普通にフィルタが宜しいかと思うのですがどうでしょうか。

関連するQ&A