![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんばんは!
VBAでの一例です。
オートフィルタで対応できると思います。
お示しの画像通りの配置で、シート見出しの2番目以降には「ユニット番号」名のシートが並んでいるとします。
標準モジュールです。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
Alt+F8キー → マクロ → マクロ実行です。
Sub Sample1() '//この行から//
Dim k As Long, lastRow As Long
Dim sN As String, wS As Worksheet
Application.ScreenUpdating = False
With Worksheets("マスタ")
For k = 2 To Worksheets.Count
Set wS = Worksheets(k)
sN = wS.Name
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 6 Then
Range(wS.Cells(7, "A"), wS.Cells(lastRow, "E")).ClearContents
End If
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A5").AutoFilter field:=4, Criteria1:=sN
If .Cells(Rows.Count, "A").End(xlUp).Row > 4 Then
Range(.Cells(5, "A"), .Cells(lastRow, "E")).SpecialCells(xlCellTypeVisible).Copy
wS.Range("A7").PasteSpecial Paste:=xlPasteValues
End If
wS.Range("A5") = sN
Next k
Application.CutCopyMode = False
.AutoFilterMode = False
.Activate
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub '//この行まで//
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
[No.2]の提示式を下記のように変更します。
理由は、最初は Sheet1 のデータの行範囲を A5~E20 で考えていたが、質問文中の「ユニット内のデータは多いもので100を超えます」を見落としていたことに、後になって気付いたのです。
その時点で、ステップ1で「範囲 A4:E150 を選択」としたのだけど、Sheet2 における修正を忘れていた次第。
前置きが長くなったけど、要は下記のように変更されたい。
2.変更前: =IFERROR(INDEX(INDIRECT(A$6),SMALL(IF(Sheet1!$D$5:$D$20=$A$5,ROW(D$5:D$20)),ROW(A1))-4),"")
 ̄ ̄変更後: =IFERROR(INDEX(INDIRECT(A$6),SMALL(IF(INDIRECT($A$4)=$A$5,ROW(INDIRECT($A$4))),ROW(A1))-4),"")
4.変更前: =IFERROR(INDEX(INDIRECT(A$4),SMALL(IF(Sheet1!$D$5:$D$20=$A$5,ROW(G$5:G$20)),ROW(D1))-4),"")
 ̄ ̄変更後: =IFERROR(INDEX(INDIRECT(A$4),SMALL(IF(INDIRECT($A$4)=$A$5,ROW(INDIRECT($A$4))),ROW(D1))-4),"")
[No.2]および上に記した内容が貴方に珍紛漢なら、私の“怪答”は全部無視されたい。
No.2
- 回答日時:
添付図参照
新規ブックを開いて、下記の作業を始める前に必ず[名前を付けて保存]を実行しておくこと。此処ではブック名を仮に「るーち.xlsx」としておく。
Sheet1 において、
1.範囲 A4:E150 を選択 ⇒ Alt+MC ⇒ “上端行”のみにチェック入れ ⇒ [OK]
Sheet「9999」において、
1.次式をセル A5 に入力
 ̄ ̄=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,9999)*1
2.セル A7 に次式を入力
 ̄ ̄=IFERROR(INDEX(INDIRECT(A$6),SMALL(IF(Sheet1!$D$5:$D$20=$A$5,ROW(D$5:D$20)),ROW(A1))-4),"")
 ̄ ̄【お断り】この式は必ず配列数式として入力のこと
3.セル A7 を右3列にオートフィル
4.オートフィルされて入力されたセル D7 の式を下記のように変更
 ̄ ̄=IFERROR(INDEX(INDIRECT(A$4),SMALL(IF(Sheet1!$D$5:$D$20=$A$5,ROW(G$5:G$20)),ROW(D1))-4),"")
 ̄ ̄【お断り】この式も必ず配列数式として入力のこと。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ちなみに、変更した箇処は「A$4」のみで、元は「D$6」に
 ̄ ̄ ̄ ̄ ̄ ̄ ̄なってた
5.範囲 A7:D7 を下方にズズーッと(空白行が表示されるまで)オートフィル
![「Excelで項目ごとにシートを振り分ける」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/298588_5c62af731d634/M.jpg)
No.1
- 回答日時:
まずは手動で振り分ける手順をイメージする。
そのイメージ通りの手順をマクロ(VBA)で再現する。
そんだけです。
(記述したマクロを最適化することもありますが、必須ではありません)
手動で振り分けるイメージが無ければ、何もできません。
…たまにいるんですよ。「面倒だから全部代わりに作ってくれ」って人がね…
イメージができれば、あとはVBAの記述のルールを覚えましょう。
まずは
「A1セルに数値を表示させる」
という超簡単な物から始めて、
「B1セルからB10セルまでの合計をC1セルに表示する」
という他のセルを参照するような物を作りましょう。
あとは条件や処理を変えたものを作ることを覚えればOK。
・・・
そんなわけで、今はとりあえず手動で振り分けることを勧めます。
自分でマクロを記述できるようになるまで半年くらいはかかると思っておきましょう。
手動で振り分けを行う中で、Excelの便利な操作方法を覚えることもあるでしょう。
意外とマクロを使うよりも手動で処理したほうが早く確実に、しかも無駄なマクロを残さずに終わらせることができたりします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelについて 1 2023/03/06 10:26
- Excel(エクセル) 添付写真上のExcelシートのように時間と曜日ごとに担当者が振り分けられているシートがあります。 例 1 2023/03/08 13:02
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(IT・Webサービス) VBAを使って表を作成したいです 1 2022/06/08 21:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) Excel シート複数 金額日計表と日付 簡単にシートコピーしたら前日の残高と日付を変更させたい 1 2022/07/15 22:10
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルの1シートを項目別に別シートへ分ける方法
Excel(エクセル)
-
エクセルである列の項目毎にシートに分ける方法を教えてください。
仕事術・業務効率化
-
【VBA】データを各シートに自動振り分けしたい
Visual Basic(VBA)
-
-
4
エクセル入力で項目別にシートに振り分ける方法を教えてください!
Excel(エクセル)
-
5
Excelの出納帳で、別シートに自動で振り分け
財務・会計・経理
-
6
Excel 表から条件にあう行を別シートに抽出したい
Excel(エクセル)
-
7
エクセルの1シートの内容を複数のシートに分割したい。
Excel(エクセル)
-
8
エクセル 特定の文字を入れると他のセルの色が変わる
Excel(エクセル)
-
9
excelのCOUNTIF関数で、『範囲=色のついたセル』に設定したいです。
Excel(エクセル)
-
10
エクセルで1列に500行並んだデータを5列毎に改行
Excel(エクセル)
-
11
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
12
エクセルのデータ振り分け方法を教えて下さい
Excel(エクセル)
-
13
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
14
エクセルの担当者別にシートを分けて表示するマクロ
Excel(エクセル)
-
15
エクセルで入力シートから別シートに蓄積方法について
Excel(エクセル)
-
16
Wordでこのような三角が出てくるようになってしまったのですがどうやったら消せますか?
Word(ワード)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで表
-
【マクロ】for next構文について
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
PDFの請求明細をエクセルにしたい
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
エクセルの関数について教えて...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシート、Excelでの数...
-
スプレッドシートで使う数式を...
-
Excelで50個のセルに同じ文字を...
-
[オートフィルタ]で抽出された...
-
エクセルの問題です。絶対値の...
-
エクセル関数を教えてください
-
各ページの1番上の表示について
-
Microsoft Officeの中古は信用...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
Excel 2019 は、SPILL機能があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報