- 締切済み
複数シートから検索文字がある列を摘出したい
初心者ですのでお力お貸し下さい。 30sheet以上あるエクセルファイルから、 特定の文字(あるいは数字)が入ったセルを検索し、その特定文字が入った一列を新規sheetへ摘出したいと考えております。 各sheetには下記の様な表が作成されており、1sheetに検索文字は0だったり複数あったりします。 A B C D 1 ◯会社 123 田中 1111 2 ▫️会社 456 佐藤 2222 3 △会社 789 加藤 3333 4 ◯会社 123 田中 4444 (表示がうまくされてなかったらすみません) 上記の様な表から、123(または田中)のみを新規sheetにまとめて表示させたいです。 またsheet毎に田中があったりなかったりしますが、全てのsheetから摘出させたいです。 新規sheetは検索結果のみを表示させて、一つの表にしたいです。 エクセルは2003使用です。 説明が下手で申し訳ありませんが、関数マクロは問いませんので分かり易く教えて頂けると助かります。 よろしくお願いします。
- smile_maron
- お礼率64% (9/14)
- その他(インターネット・Webサービス)
- 回答数5
- ありがとう数2
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7940)
>全ての表示させたいデータが出てこなかったです・・・一部のみが表示されていました 拾うのと拾えないのがあるってことはマクロの間違いじゃなく、 1)(拾えなかった)データが間違ってる (田中を拾うつもりなのに「田□中」(□はスペース)など間違ったデータが記入されているとか) 2)そもそもヤリタイことが正しく説明できてない (123を拾うといいながら、実は123456も拾いたいと思っていたとか) のどちらかだということです。 拾えなかったデータを見直して間違いが無いか確認してください どうしても出来ないときは、拾いたいと思ってたのに拾えなかったデータが具体的にどういう内容なのか、正しく実際のエクセルデータの内容を挙げてご相談を投稿しなおしてください。
- tom04
- ベストアンサー率49% (2537/5117)
No.1・3です。 B列に「123」もしくはC列に「田中」の行すべてを表示すればよい! という解釈でした。 ただ1行間違っていました。 >.Range("A1").AutoFilter field:=5, Criteria1:="*123", Operator:=xlOr, Criteria2:="*田中*" の行を > .Range("A1").AutoFilter field:=5, Criteria1:="123*", Operator:=xlOr, Criteria2:="*田中" に変更してください。 (アスタリクスの位置が違っていました)。 これでB列に「123」もしくはC列に「田中」がある行すべてが一番左側Sheetに表示されるはずです。 どうも失礼しました。m(_ _)m
- tom04
- ベストアンサー率49% (2537/5117)
No.1です。 >エラーが出てしまい表示させるところまでいけず・・・ 確認ですが↓のようになっているでしょうか? (1)前回のアップしている画像は左側が表示させたいSheetでSheet見出しの一番左側に配置してある。 (2)Sheet見出しの2番目以降のSheetはすべて同じ配置で右側のようになっている。 (質問通りA~D列だけのデータである。) (3)コードはちゃんと標準モジュールに記載しているか? 今一度上記のコトを確認してみてください。 ちゃんと条件があっていれば Sheet見出しの一番左側Sheetに表示されると思うのですが・・・m(_ _)m
- keithin
- ベストアンサー率66% (5278/7940)
標準的な「探してコピーする」だけの作業です。 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() dim c as range dim c0 as string dim w as worksheet dim x as variant ’結果シートの準備 on error goto errhandle worksheets("検索結果").cells.clearcontents worksheets("検索結果").range("A1:D1") = array("会社","記号","担当","数字") on error goto 0 ’検索ワードの入力 x = inputbox("検索内容") if x = "" then exit sub ’各シートの検索 for each w in worksheets if w.name <> "検索結果" then set c = w.cells.find(what:=x, lookin:=xlvalues, lookat:=xlwhole) if not c is nothing then c0 = c.address do c.entirerow.copy destination:=worksheets("検索結果").range("A65536").end(xlup).offset(1) set c = w.cells.findnext(c) loop until c.address = c0 end if end if next exit sub ’結果シートの作成 errhandle: worksheets.add before:=worksheets(1) activesheet.name = "検索結果" resume end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押してマクロを実行する。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! VBAでの一例です。 >新規sheetにまとめて表示させたいです。 その都度新規Sheetを追加するとSheet数が増えるばかりですので、 「新規Sheet」(結果表示させたいSheet)をSheet見出しの一番左側に配置してあるという前提です。 すなわち元データはSheet見出しの左から2番目以降にあるとします。 尚、各Sheetとも↓の画像のように1行目が項目行で2行目以降にデータがあるとします。 画像では左側が結果を表示させるSheet(Sheet見出しの一番左側Sheet)とします。 ↓のコードを標準モジュールにコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() 'この行から Dim k As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets(1) Application.ScreenUpdating = False lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(wS.Cells(2, "A"), wS.Cells(lastRow, "D")).ClearContents End If For k = 2 To Worksheets.Count With Worksheets(k) lastRow = .Cells(Rows.Count, "A").End(xlUp).Row Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=B2&""_""&C2" .Range("A1").AutoFilter field:=5, Criteria1:="*123", Operator:=xlOr, Criteria2:="*田中*" If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Range(.Cells(2, "A"), .Cells(lastRow, "D")).SpecialCells(xlCellTypeVisible).Copy _ Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Offset(1) End If .AutoFilterMode = False .Range("E:E").Clear End With Next k Application.ScreenUpdating = True End Sub 'この行まで ※ マクロを実行するたびに「新規Sheet」の2行目以降は消去するようにしていますので データ変更があるたびにマクロを実行しても構いません。m(_ _)m
お礼
教えて頂いた形をベースにやってみたのですが、エラーが出てしまい表示させるところまでいけず・・・もう少し勉強してみます、ありがとうございます!
関連するQ&A
- 複数のシートに重複する文字列の抽出
教えてgooの利用は初めてです。 どなたかお時間ある方、お知恵を貸していただけると幸いです。 Excel初心者です。 Sheet1(会合名) AAA会社 | 鈴木 一郎 | Sheet1 BBB会社 | 田中 ニ郎 | Sheet1 CCC会社 | 佐藤 三郎 | Sheet1 Sheet2 BBB会社 | 田中 ニ郎 | Sheet2 DDD会社 | 渡辺 四朗 | Sheet2 EEE会社 | 伊藤 五郎 | Sheet2 Sheet3 BBB会社 | 田中 ニ郎 | Sheet3 CCC会社 | 佐藤 三郎 | Sheet3 FFF会社 | 高橋 六郎 | Sheet3 上記のようにシート毎に数百件ずつ会社名・氏名・住所等が記載された複数のリストがあります これらの中から名前が重複してる人だけを抽出し Sheet4 田中 ニ郎 | Sheet1 田中 ニ郎 | Sheet2 田中 ニ郎 | Sheet3 佐藤 三郎 | Sheet1 佐藤 三郎 | Sheet3 このSheet4のように重複している名前とシート名が分かる形で抽出できないでしょうか? 具体的には各会合に参加している出席者で、出席頻度の高い人・出席した会合名を一覧で表示したいと考えています。
- ベストアンサー
- Excel(エクセル)
- 特定範囲にある表で特定の文字が含まれている数の検索
表題の件について教えてください。 AG列に1~50の数値が入っています。 AH列に文字が入っています(検索対象の文字を含む) AI列に個数が入っています。 AH列の文字のうち特定の文字(たとえで言うと佐藤という名前)の がはいっていればその対象のAI列の個数の合計を 算出したいのです。 AG AI 1 田中 6 2 田中・佐藤・森 5 3 佐藤 2 4 本田 4 5 加藤・佐藤 3 6 佐藤・伊藤 1 簡単な例を作成しましたが、この例であれば、 佐藤が含まれているのは11になると思います。 そして、これのうち田中と佐藤両方を含まれている数を 求めたい場合はどのような式にすればよいのでしょうか。 Windowsでエクセル2003を使用しています。 どなた様かご回答をいただけますでしょうか。 よろしくお願い致します。
- ベストアンサー
- Windows XP
- エクセルマクロで別のシートを検索して表示
エクセルのマクロで次の様な検索が出来るようにしたいのです。 シート1にあるセル(毎回同じセルとは限らない)に、 「出席者」という文字が入っています。 その直下のセルに名前(毎回違った名前)が入っています。 例 A5=出席者 A6=山田、田中、鈴木 この名前(例のシート1のA6)データをシート2の特定のセルに表示させたいのです。 シート2にボタンを配置してそれをクリックしたら表示できるという風に。(シート2の特定のセルは仮にB10とします) 出席者と名前は毎回同じ位置関係ですが、 表示されるセルは決まっていません。 このような作業をマクロで出来ますか? 出来るのでしたらそのマクロを教えて頂けますか? 初心者です、分かり易い回答をよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセル 複数シート検索のマクロ
以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。
- 締切済み
- オフィス系ソフト
- 複数のシートや複数のブックの検索
こんばんは。 エクセルはほぼ初心者です。 セルに入れた文字をほぼ一致、または完全一致で複数のシート内を 検索して、その行の数値を表示させる事はできますか? VBAやマクロで教えて頂けると幸いです。 欲張りですみませんが↑の別バージョンで複数のブック内も可能でしょうか?
- 締切済み
- オフィス系ソフト
- 他のシートのセルの値を引用したい
EXCEL2007でマクロ作成中の初心者です。今困っています。お助けください。 シートのA列に名前が書いてあります。 その名前の横B列に番号を入れたいのです。 A B 1 佐藤 2 伊東 3 加藤 4 以下つづく 横B列の番号は他のシートにあります。現状では以下の番号になります。 A B 1 佐藤 1 2 伊東 3 3 加藤 5 4 以下つづく 他のシートに以下の表があります。これは可変の表で、名前は次の列は空白です。 名前のあるセルのみ上の番号を表示したいです。 、 A B C D E F G →以下つづく 1 2 番号 1 2 3 4 5 6 7 →以下つづく 3 名前 佐藤 伊東 加藤 田中 →以下つづく わかりにくいかもしれませんがよろしくお願いします。
- ベストアンサー
- Visual Basic
- Excel 2007 マクロ 複数シートの検索
Excel 2007 マクロ 複数シートの検索 Sheet1とSheetに情報があります。 Sheet1にある番号とSheet2にある番号を 検索して、ヒットした場合 Sheet1の備考の文字をSheet2に備考に反映したいです。 画像にSheet1、Sheet2、完成形があります。 関数であればVlookupを使用しますが、 マクロでできるようにしたいです。 どのようなマクロになりますでしょうか。 アドバイスお願いします。
- ベストアンサー
- その他MS Office製品
- エクセル 複数行を別のシートに摘出
いつもお世話になっております。 内容は添付画像にてご確認ください。 例え B1に”○”等の特定の文字が入力されたら、その○印の行すべてを下記に摘出。 また可能であれば、同じように別のシートに摘出したいです。 摘出は最大で20件ぐらいです。 エクセルは人類を救うと思っている方、よろしくお願い致します。 ※いろいろアイデアはでるのですが、勉強不足で・・・・・・ 2007Verですー
- ベストアンサー
- オフィス系ソフト
- エクセルで特定のセル列のみ摘出、表示
質問内容なのですが、エクセルシート縦列に1万セルの特定の文字が記載されているのですが その中から調べたい特定に一致した文字横列のみ摘出か表示は可能でしょうか?(約1万セルから調べたい700セルを表示したいです。) (以前フィルタ使用していたのですがやはり誤差がでてしまい正確な結果が得られなかったので…) 当方Excel 2007を使用しております。 質問内容例 __ 1-2 ---- 2-8 ←○ ---- 3-5 ---- 5-4 ←○ ---- ○の部分のみ摘出か表示ができればうれしいです よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル、シートBからシートAのアクティブセルへ
シートBに社員表があり、ダブルクリックでシートAのアクティブセル(40文字くらい入る)へ名前が追加されるようにしたいのですが、何かいい方法がありますでしょうか? 例) 田中、佐藤、石川、・・・ シートBのダブルクリックで動くマクロに「シートAのアクティブセルへ文字を追加する」という処理がしたいです。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
検索結果を表示させるところまでいったのですが、何故か検索結果に全ての表示させたいデータが出てこなかったです・・・一部のみが表示されていました。 もう少し勉強してみます、ありがとうございます!