こんにちは質問です。
仕事でいきずまってます。エクセルのスペシャリスト様、ご教授願います。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Excel(エクセル) エクセルVBA VLOOKUPを使ってのカウント作業 2 2023/02/19 09:03
- ビジネスマナー・ビジネス文書 電話の名乗り、マナーについて教えてください。 ホームセンターにリフォーム工事を依頼したところ、後日知 5 2023/05/09 21:07
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- その他(IT・Webサービス) backlogガントチャートのグルーピング項目が少ない ガントチャートを仕事で使用しています。 担当 1 2023/04/04 14:31
- リフォーム・リノベーション 中古の家を購入した後、破損箇所が見つかった場合 6 2023/07/24 00:14
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
Accessを開きなおすとテキスト...
-
エクセルのフィルタ抽出が固まる
-
警察はスマホに保存した動画や...
-
帳票フォームでのあるコンボボ...
-
CSVファイルでテキストの改行の...
-
最新の日付とその金額をクエリ...
-
構文エラー:演算子がありませ...
-
ACCESSのSQLで、NULLかNULLでな...
-
汎用カード型のデータベースソ...
-
Access SQL のMID関数について
-
AccessのSQLで、FROM句の構文エ...
-
QRコードとバーコードについて
-
Accessのリンクテーブルについて
-
Accessフォームで平均値の出し...
-
sql update で 抽出条件データ...
-
シートが異なるセル同士を、相...
-
エクセル 顧客管理表に担当ごと...
-
FROM句の構文エラー ACCESS SQL
-
FileMaker Pro 10 で令和を表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessを開きなおすとテキスト...
-
警察はスマホに保存した動画や...
-
エクセルのフィルタ抽出が固まる
-
Accessのフォームへ、記録者の...
-
構文エラー:演算子がありませ...
-
最新の日付とその金額をクエリ...
-
Accessのリンクテーブルについて
-
CSVファイルでテキストの改行の...
-
更新クエリをリンクデータベー...
-
データベースの選定について 要...
-
ドリームメーカーってどうやっ...
-
シートが異なるセル同士を、相...
-
帳票フォームでのあるコンボボ...
-
20万行あるデータを動かしたい
-
Access フォーム上でコンボボッ...
-
googleフォームでインストール...
-
顧客データベースを作る場合、...
-
テキストボックスにコントロー...
おすすめ情報