• 締切済み

ブック内からセル検索

excel2013を使用していますが、商品管理のデータシートを作成しています。 連番にて商品管理をして、一覧(目次)には基本的な情報を記入して商品ごとに別シートを作成、リンクし詳細な履歴等を見られるようにしています。 履歴は商品ごとに多種ある為、履歴から検索し、 共通する履歴の商品の抽出をマクロで出来たらと考えています。 せっかくなら一覧を活用出来たらとも考えていますが、、、 (検索→ヒットしたセルを持つシートの商品を一覧から絞るなど) 方法と、他にやり易いやり方等ありましたらご教授お願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問者が、このシステムを作ったのですか? 「商品管理のデータシートを作成しています。 連番にて商品管理をして、一覧(目次)には基本的な情報を記入して商品ごとに別シートを作成、リンクし詳細な履歴等を見られるようにしています。」 そうではなくて、別に専門家が居るでしょう。 その人に頼むべきです。エクセルでは検索はFindメソッドで行うのが、普通のやり方ですが、2条件以上になると、やり方に工夫が要り(複雑化して)、難しいと思う。 ーー SQLの熟練者に頼んで、最低でもAccess、その他OracleなどDBソフトで、専門家がやるべきです。 SELECT文利用なら、3条件以上でも、1条件の延長線のやり方で済むと思う。 それに文章の語句のパターンにこだわった検索だと、正規表現の機能も使いたくなるかもしれない。 ーー こんな大雑把な質問の書き方表現で,VBAコードの直の回答を得ようとするのは、無謀でしょう。 もっと少数でもよいから、現実の臭いのするデータ例を挙げて、こう検索して 、こういう結果を得たい、という風に、人間が作業すること(ステップ)に借りて、表現するのが、わかりやすいと、経験から思うが、ほとんどの質問者はそれをしない。 また基幹の仕事に関することを、こんなところに、処理プログラムを、丸投げしようというのは、おかしいと思う。それ相当のコストは払うべきです。 === あえてやるなら、2条件以上なら、1つか2つのワークシートを使い、これ用に検索結果の中間メモ代わりに使って、前段階の検索結果に対して、次の検索をかけて、(条件をかけて、絞る)やる方法はあるかもしれない。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

検索のための検索値はどこに入れるのか答えないので適当に目次シートのE1に入れるとしてシートの並びか添付図のようになっているとして 結果を目次シートの名前でフィルターします。 Sub Test() Dim LastRow As Long Dim FList As Variant, tmp() As String Dim i As Long, j As Long: j = 0 Dim FRange As Range With Sheets("目次") ReDim tmp(j) For i = 2 To Worksheets.Count Set FRange = Range(Sheets(i).Cells(8, "B"), Sheets(i).Cells(Rows.Count, "B").End(xlUp)).Find(.Range("E1").Value, LookAt:=xlPart) If Not FRange Is Nothing Then If i <> 2 Then j = j + 1 ReDim Preserve tmp(j) End If tmp(j) = Sheets(i).Range("B5").Value End If Next FList = Array(tmp) .Range(.Cells(1, 1), .Cells(Rows.Count, 3).End(xlUp)) _ .AutoFilter Field:=2, _ Criteria1:=FList, _ Operator:=xlFilterValues End With End Sub

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> 履歴は商品ごとに多種ある為、履歴から検索し、共通する履歴の商品の抽出 検索するのは項目の喜、怒、哀、楽とあるデータを検索するのでしょうか。検索のための検索値はどこに入れるのでしょうか。

junget01
質問者

補足

項目の喜怒哀楽の所には 簡単になにがあったかを記入するつもりです。 検索する範囲を絞るとしたら項目を参照したいです。