
こんにちは質問です。
仕事でいきずまってます。エクセルのスペシャリスト様、ご教授願います。
3人の担当者のsheet(ああ、いい、うう)があり、工場名、工事名称、担当者が記入してあります。
1、集計シートの検索欄に工場名を入力したら、
3人の担当者sheetにあるデータと一致する工場名の行を表示させたいです。
2、担当者の名称を入力したら、その担当の工事をすべて表示したいです。
3、工場名および担当者名を入力したら
3人の担当者sheetにあるデータと一致する工場名及び担当者の行を表示させたいです。
すべてを網羅できますでしょうか?
マクロは苦手です。関数でなんとかなりませんか?

No.2ベストアンサー
- 回答日時:
まず、各「担当者のSheet」のシート名を、担当者名と同じ名称となる様にして下さい。
次に、新しいシートを1枚設けて、そのシート名を
作業用
等として下さい。
次に、作業用シートのA1セルからC1セルにかけて、各「担当者のSheet」の"シート名"を入力して下さい。
次に、作業用シートのA2セルに次の様な関数を入力して下さい。
=IF(ISREF(INDIRECT("'"&A$1&"'!A1")),IF(IF(集計!$B$2="",集計!$B$3=A$1,AND(OR(集計!$B$3="",集計!$B$3=A$1),INDIRECT("'"&A$1&"'!A"&ROW())=集計!$B$2)),COLUMNS($A:A)*10000000+ROW(),""),"")
次に、作業用シートのA2セルをコピーして、作業用シートのB2~C2の範囲に貼り付けて下さい。
次に、作業用シートのA2~C2の範囲をコピーして、同じ列範囲の3行目以下に貼り付けて下さい。
次に、集計シートのA7セルに次の様な関数を入力して下さい。
=IF(ROWS($7:7)>COUNT(作業用!$A:$C),"",IF(INDEX(INDIRECT("'"&INDEX(作業用!$A$1:$C$1,INT(SMALL(作業用!$A:$C,ROWS($7:7))/10000000))&"'!A:C"),MOD(SMALL(作業用!$A:$C,ROWS($7:7)),10000000),COLUMNS($A:A))="","",INDEX(INDIRECT("'"&INDEX(作業用!$A$1:$C$1,INT(SMALL(作業用!$A:$C,ROWS($7:7))/10000000))&"'!A:C"),MOD(SMALL(作業用!$A:$C,ROWS($7:7)),10000000),COLUMNS($A:A))))
次に、集計シートのA7セルをコピーして、集計シートのB7~C7の範囲に貼り付けて下さい。
次に、集計シートのA7~C7の範囲をコピーして、同じ列範囲の8行目以下に貼り付けて下さい。
以上で準備は完了で、後は集計シートのB2セルに工場名や担当者名を入力しますと、集計シートのA列~C列の7行目以下に、3人の担当者シートにあるデータの中で、該当する全てのデータが表示されます。

No.3
- 回答日時:
こんばんは!
関数でやってみようと作業用の列・Sheetを使用して試みましたが
数式が長くなるのであきらめました。
お望みでないVBAになってしまいますが、一例です。
↓の画像の左側が「集計Sheet」でSheet見出しの一番左側にあり、Sheet2~Sheet4のSheet名は
ああ・いい・うう のように担当者名になっているという前提です。
まず、Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてください。
Dim k As Long, lastRow As Long, str As String, wS As Worksheet 'この行から
Sub Sample1()
Set wS = Worksheets(1)
For k = 2 To 4 '←Sheet見出しの左から2番目~4番目のSheet
With Worksheets(k)
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Range("B2")
If wS.Range("B3") <> "" Then
.Range("A1").AutoFilter field:=3, Criteria1:=wS.Range("B3")
End If
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "C")).Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
.AutoFilterMode = False
End With
Next k
End Sub
Sub Sample2()
Set wS = Worksheets(1)
str = wS.Range("B3")
On Error Resume Next
With Worksheets(str)
If wS.Range("B2") <> "" Then
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Range("B2")
End If
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "C")).Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
.AutoFilterMode = False
End With
End Sub 'この行まで
次にExcel画面に戻り、
Sheet見出しの一番左側にある「集計Sheet」のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り、B2・B3セルにデータを入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim endRow As Long
If Intersect(Target, Range("B2:B3")) Is Nothing Then Exit Sub
endRow = Cells(Rows.Count, "A").End(xlUp).Row
If endRow > 6 Then
Range(Cells(7, "A"), Cells(endRow, "C")).ClearContents
End If
If Target.Address = "$B$2" Then
If Target <> "" Then
Call Sample1
Else
Call Sample2
End If
ElseIf Target.Address = "$B$3" Then
If Target <> "" Then
Call Sample2
Else
Call Sample1
End If
End If
End Sub 'この行まで
おそらくお望み通りの動きになると思います。
>マクロは苦手です。関数でなんとかなりませんか?
というコトですので、
ご希望の方法でない場合は無視してください。m(_ _)m

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
シートが異なるセル同士を、相...
-
accsessで顧客コードで氏名を呼...
-
Accessを開きなおすとテキスト...
-
どうすれば 拡張子 を写真のよ...
-
将棋のDB。「この局面と同一の...
-
.flex-direction プロパティは...
-
汎用カード型のデータベースソ...
-
データベースがちゃんと作成さ...
-
CSVファイルでテキストの改行の...
-
構文エラー:演算子がありませ...
-
FileMaker Proに近い無料のWeb...
-
半角ハイフンに似た文字
-
データベースの勉強 公務員を目...
-
はじめてのAccess 2019 について
-
DBエラーを解決したい
-
ITパスポートについての質問で...
-
マイクロソフトAccessでsqlのas...
-
情報整理するのに、「 Fullfree...
-
レコード数のカウント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
accsessで顧客コードで氏名を呼...
-
CSVファイルでテキストの改行の...
-
警察はスマホに保存した動画や...
-
ACCESSのSQLで、NULLかNULLでな...
-
エクセルのフィルタ抽出が固まる
-
ファイルト復旧ソフト”Pndora R...
-
将棋のDB。「この局面と同一の...
-
最新の日付とその金額をクエリ...
-
Accessを開きなおすとテキスト...
-
マイクロソフトAccessでsqlのas...
-
シートが異なるセル同士を、相...
-
Accessのフォームへ、記録者の...
-
DBエラーを解決したい
-
Access フォーム上でコンボボッ...
-
データベースの勉強 公務員を目...
-
顧客データベースを作る場合、...
-
半角ハイフンに似た文字
-
20万行あるデータを動かしたい
-
DocuWorksでの印刷
おすすめ情報