- ベストアンサー
エクセルシートの条件検索についてわからない方法
tom04の回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 何とか関数で!とやりかけてみましたが、ギブアップです。 お望みでないVBAになってしまいますが、一例です。 Alt+F11キー → メニュー → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub 表示() 'この行から Dim i As Long, j As Long, cnt As Long, str As String Dim c As Range, r As Range, myArea As Range Dim wS As Worksheet, wS1 As Worksheet Set wS1 = Worksheets("結果") If wS1.Cells(2, 2) = "" Then MsgBox "検索データが未入力です。" wS1.Cells(2, 2).Select Exit Sub ElseIf wS1.Cells(2, 3) = "" Then wS1.Cells(2, 3) = "条件入力" End If str = wS1.Cells(2, 1) Set wS = Worksheets(str) i = wS1.Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False If i > 3 Then wS1.Rows(4 & ":" & i).ClearContents wS1.Cells(4, 1) = "日付" End If cnt = 1 For j = 2 To wS.Cells(1, Columns.Count).End(xlToLeft).Column Step 2 With Range(wS.Columns(j), wS.Columns(j + 1)) Set c = .Find(what:=wS1.Cells(2, 2), LookIn:=xlValues, lookat:=xlPart) Set r = .Find(what:=wS1.Cells(2, 3), LookIn:=xlValues, lookat:=xlPart) If Not c Is Nothing Or Not r Is Nothing Then cnt = cnt + 1 wS1.Cells(4, cnt) = wS.Cells(1, j) End If End With For i = 3 To wS.Cells(Rows.Count, 1).End(xlUp).Row Set myArea = wS.Cells(i, j).Resize(1, 2) If Not myArea.Find(what:=wS1.Cells(2, 2), LookIn:=xlValues, lookat:=xlPart) Is Nothing Or _ Not myArea.Find(what:=wS1.Cells(2, 3), LookIn:=xlValues, lookat:=xlPart) Is Nothing Then wS1.Cells(Rows.Count, cnt).End(xlUp).Offset(1) = wS.Cells(i, 1) End If Next i Next j wS1.Rows(4).NumberFormatLocal = "yyyy/m/d" cnt = 0 For i = 5 To wS1.UsedRange.Rows.Count cnt = cnt + 1 wS1.Cells(i, 1) = "参加者" & cnt Next i Application.ScreenUpdating = True End Sub 'この行まで >検索条件は,「会議」のみで検索する場合もあります。 とありますので、「結果」SheetのB2またはC2セルのデータが含まれるものを表示するようにしています。 すなわちC3セルが空白の場合は空白セルが条件に含まれてしまいますので、 敢えて「条件入力」と表示させています。 関数でできる方法があればごめんなさいね。m(_ _)m
関連するQ&A
- Excel VBA Sheet2で指定した条件でSheet1の行削除
Sheetが2つあるExcelブックがあります。 Sheet2で検索条件(列とキーワード)を指定し、 この条件でSheet1を検索、 Sheet1で検索にヒットした行を行削除したいと考えています。 汎用性を高める為、Sheet2で指定する検索条件は可変とし、 検索対象とする列とキーワードは任意のものを必ず指定(""は無し)。 列&キーワードをひとつの検索条件として、 Sheet2の2行目~最終行までLoopしたいのです。 InStrを使用するなど、部分的には分かるのですが、 2つの条件を同時に変えながらLoopさせる方法が 色々試してみましたが、どうしても分かりません。 VBAに詳しい方、同様の処理をしたことがある方、 どうか助けてください!宜しく御願い致します。 [Sheet1] ・・・ 元データ A B C ---------------------------- 1 あ ---------------------------- 2 い 該当 ---------------------------- 3 う 閉鎖 ---------------------------- 4 え 該当 ---------------------------- 5 お ---------------------------- [Sheet2] ・・・ 行削除する範囲とキーワードを指定。 A B ---------------------------- 1 列 キーワード ---------------------------- 2 A あ ---------------------------- 3 B 該当 ---------------------------- 4 C 閉鎖 ---------------------------- [求めている結果] 1, 2, 3, 4行目が削除される
- ベストアンサー
- Visual Basic
- エクセルで検索して別シートに抽出したい
エクセル2003で顧客リストを作成しています。 そのリストの中から特定の文字列を検索し(あいまい検索)、その項目が含まれる行ごと 別シートに抽出をしたいです。 ほかの方のご質問も参考に試してみたのですが、上手くいきません。 1行目に各項目名 A日付 B担当1 C担当2 D管理番号 E顧客名 2行目からデータです。 ほぼ担当1か顧客名で検索し、検索結果は複数になることがほとんどです。 どなたかよろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- EXCEL 検索条件をハイライト
EXCELでシート1に A行に番号(型番)(A-1、A-2、A-3・・・・・)が入っています。 シート2のA行に検索条件になるリストがあります。 A-3、A-10 などなど この検索条件に合致したシート1のA行のセルをハイライトしたいのですが、良い方法はありますでしょうか? つまり、この場合、例えばVBAなら実行すると、シート1のA-3という文字列が入ったセルと、A-10という文字列が入ったセルがハイライト(背景の色が変わる)される、といった具合の結果を必要としています。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excelで指定したワークシートを開かせたい
Excelで指定したワークシートを開かせたいのですが、方法がわかりません。お知恵をお貸しください。 Excelを開いたときにメッセージボックスで開きたい日付のワークシートを指定して開かせるようにしたのですが方法がわかりません。 Excelのファイルは次のようになっています。 ワークシートは、1~31まで31のシートがあります。 Excelファイルを開いたときにどのファイルを開くか訪ね、該当するシートを開きたい。 日付入力が、「07月02日」ならワークシート名の2を、「07月05日」ならワークシート名の5を開かせたいのですが、方法がわかりません。 申し訳ありませんが、お力をお貸しください。
- 締切済み
- オフィス系ソフト
- excelで検索用シートを作りたい。
お世話になります。 excelでわからない事があり、困っています。 検索用シート データシート A B A B C 1 部署名 (空欄) 1 部署名 担当者 書類名 2 担当者 (空欄) 2 総務部 鈴木 新人用の書類 3 書類名 (空欄) 3 人事部 田中 部長の書類 上図の様に検索用シートとデータ用シートが同じBook内にあります。 検索用シートのB列は空欄になっており、例えば(1-B)に検索したい部署名の一部、又は全てを入れると、(2-B)及び(3-B)にその部署名に対応した、担当者、書類名が表示 される。 また、検索結果が複数ある場合には、上のものから順々に検索用シートの空欄に表示される。 部署名での検索以外にも、同様に担当者、書類名でも検索できる。 この様な仕様にしたいのですが、どのすれば良いでしょうか? どうぞよろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルでの検索について
初めて質問させていただきます。 エクセルシートに1万個程度の番号が 縦(行)に並んでいます。なお、番号はそれぞれ異なります。 あるフォームに日付と10個の異なる番号を入力すると、 エクセルシートから合致する番号を検索し、 エクセルシートの一行目に日付が自動的に入力され、 その行を色塗りしたいと考えております。 これをVBA(マクロ)にて作成したいのですが、 初心者なのでどのようにやればよい分かりません。 どうか教えていただけないでしょうか。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- シート間の検索したデータの受け渡しについて
シート1に日付、名前、その他の項目があり、シート2に日付を入力すると、シート1から検索された行を全てシート2に表示したいのですが、そのようなことは可能でしょうか? 1行だけだと、わかるのですが、何行もある場合はどのように表示したらいいのかわかりません。 どなたかご教授お願いします。 また、このような処理はエクセルだけでは厳しいのでしょうか? やはり、マクロを使用したほうがよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで 指定のデーターを指定のシートへ書き込む方法
入力する表が 下記の通りです 日付 氏名 内容 1 Aさん 12345 2 Bさん 23456 3 Cさん 34567 2 Aさん 56789 3 Bさん 98765 5 Aさん 34986 というような表です シート名は"Aさん"という名のシートと"Bさん"というシートと"Cさん"という名のシートがあります。 そのAさんという名のシートには 日付 内容 1 2 3 4 5 6 というような 表があります。これは"Bさん""Cさん"ともいっしょです この"Aさん""Bさん""Cさん"の名前を判別して、その"内容"をAさんならAさんのシートの同じ日付の"内容"に書き込みたいのです。 結果としては、 Aさんのシート 日付 内容 1 12345 2 56789 3 4 5 6 34986 としたいのです。 どなたかよい方法御座いましたら宜しくお願い致します。
- ベストアンサー
- その他(ソフトウェア)
- excelでボタン一つでシートからシートへのコピーの方法。
例) シート1に日付と商品名と単価と個数、それに特別の項目があります。 下図のような表。 =============== 日付 商品 単価 個数 4/1 A 100 1 特別 4/1 D 0 3 ←1行空いてます。 4/2 B 120 2 4/2 C 130 1 ←1行空いてます。 4/3 A 120 1 4/3 C 130 3 特別 4/3 D 0 5 ←1行空いてます。 4/4 定休日 : : 4/30 =============== このような表があるとします。 これをボタン一つでシート2にコピーしたいのです。 (簡単に言えばシート1がデータ。シート2が印刷用です。) <条件> シート2のセルの大きさは変えられませんが、それ以外はOK シート2にコピーする際に日付指定が出来ること。(1日から5日までのデータを印刷するなど。) 長々とした文になりましたが、よろしくお願いします。 また、わからないことがあれば補足いたします。
- 締切済み
- オフィス系ソフト
- エクセルの条件によってセルをつめる方法
検索するも良い言葉が思いつかず解決できません。 文章がわかりづらいかもしれませんが宜しくお願いいたします。 ・Sheet1で日付と曜日の行の下の行に「1」もしくは「0」を入力する。 ・Sheet2に「1」の行の日付と曜日だけを表示する (「0」の日付と曜日の行はつめて表示) 宜しくお願いいたします!!
- ベストアンサー
- オフィス系ソフト
お礼
早速の回答ありがとうございます。 実行してみたところ,思った通りの動作ができました! できればこのまま使いたいのですが,VBAは職場で管理できるスタッフがいないため,採用には至りません。残念・・・ ですが,この回答に感謝いたします。