www.wanichan.com

Microsoft Office全般(Excel/Word/PowerPoint/Access/Outlook/OneNote)の使用方法を解説。

PC > Excel > FAQ >

[Excel] 抽出条件にセル値を使うには?

Microsoft Office Users Forum過去ログ
  • このエントリーをはてなブックマークに追加
■2612 / inTopicNo.1) 抽出条件にセル値を使うには?
□投稿者/ お茶 -(2006/07/12(Wed) 20:34:40)


    記事内容:[Excel] 

    外部データ取り込みでアクセスのデータを取り込むのですが、
    抽出条件にセルの値を利用したいのですが、マクロの記述
    はどうすればよいのでしょうか。

    アクセスデータ
    製品番号   名称      型式     個数  金額 ・・・・
    550022AA  せっけん   SEKKENN     1   5000
    550023AB  シャンプー  SYANNPUU    1   6500
    550024SB  リンス    RINNSU      1   5000
    550025AA  ブラシ    BURASHI     1   3000

    A1セルに「550024」があります
    A1セル値で始まる製品番号のデータを抽出したいのです。
    LIKE Range("A1").Value &"%"
    マクロの記述をどのようにすればよいか教えて下さい。
    よろしくお願いします。


■2613 / inTopicNo.2) Re[1]: 抽出条件にセル値を使うには?
□投稿者/ y sakuda -(2006/07/12(Wed) 22:04:31)
http://www16.plala.or.jp/ysakuda/

    抽出とは具体的にどこにどうしたいのでしょうか?
    マクロではなく データ⇒オートフィルタ でA列のフィルタ条件で
    5500024 で始まる
    で済むと思いますが?
    また、どうしてもマクロでやる場合、ループの作り方などはお分かりなんでしょうか?

■2614 / inTopicNo.3) Re[2]: 抽出条件にセル値を使うには?
□投稿者/ お茶 -(2006/07/12(Wed) 23:14:07)

    1つのエクセルファイルをひな形としてファイル名を作り、上記例でいくと
    550022.XLSから連番でひな形のコピーを作ります。

    A1のセルにファイル名を取得しておけばA2セル位置に外部データとし
    て取り込むことでファイル毎に抽出条件を変更しなくてもファイル名が
    抽出条件にできるようにしたいからです。

    抽出条件に直接入力すれば簡単ですが、それは作るファイル数が少
    なければそうしてもよいと考えますが、ファイル数が多いため手間を省い
    て手動によるミスを防ぎたいのです。

■2615 / inTopicNo.4) Re[3]: 抽出条件にセル値を使うには?
□投稿者/ y sakuda -(2006/07/13(Thu) 00:11:17)
http://www16.plala.or.jp/ysakuda/

    手動処理ではやりたくない事情は分かりましたが、何をなさりたいのか
    今一つ分かりませんので整理させてください

    1.Accessデータを外部データの取り込みでExcelシートに取り込んであり、
     それをコードグループ毎にExcelブックに分けて保存したい
    2.AccessDBから直接コードグループ毎のデータを抽出してExcelブックに
     落としたい
     また、この場合ExcelでやろうとしているのかAccessでやろうとしているのか?
    #私はAccessのマクロは全く分かりません

■2616 / inTopicNo.5) Re[4]: 抽出条件にセル値を使うには?
□投稿者/ お茶 -(2006/07/13(Thu) 09:22:50)

    DBがORACLEで作られたソフト(以下DK)があり、EUCが含まれているの
    でACCESSを使ってリンクテーブルを作成します。
    リンクテーブルから全レコードを対象に必要なフィールドのみをクエリにて一
    覧を作っておきます。・・・「A」

    EXCELにて「データ」-「外部データの取り込み」-「新しいデータベースク
    エリ」を行い、「A」をリンクでEXCELに貼ることができます(知ってますよね)

    [A」をそのまま貼ると全レコードが対象となってしまうので、EXCELのファイル
    名を取得したセル(「A1」とします)の値を抽出条件として「A」を取り込めば
    全レコード中の1件が対象となります。
    注)抽出条件としているフィールドは主キーのため重複がないため

    「A」はセル位置「A2」で取り込むと欲しいデータは3行目に横に並びます。
    このリンクさせたSHEETを取り込み用SHEETとして別SHEETにリンクで貼り付ければ、DKを更新すればEXCEL内のデータを自動更新することができ
    ます。

    流れとしては上記ですが、やりたいことは大本となるソフト(DK)を更新する
    だけでEXCEL側も更新したいのです。

■2617 / inTopicNo.6) Re[5]: 抽出条件にセル値を使うには?
□投稿者/ y sakuda -(2006/07/13(Thu) 13:17:07)
http://www16.plala.or.jp/ysakuda/

    えーと、前に申し上げた通り私はAccessは全くだめで、以前Accessデータを
    始末したときも、とりあえずテーブルをExcelにエクスポートしてすべてExcel
    でやったような状態です(^^;

    ということですので、下はExcelでデータベースを作成し、それをADOで
    読み込む形を取ってますが、ファイル名をAccessDBに変更し、シート名を
    テーブル名に変更すれば、多分動くのではと思います・・・・
    ADOやSQL自体も身の周りの世話はできると言う程度ですので怪しげ
    ですが参考まで。

    前提:
    1.Excelブックと同じフォルダにDBファイルが存在する
    2.キーは"製品番号"
    3.ExcelブックのSheet1のA1に製品番号 550022等が存在
    4.Sheet2にDBを読み込み展開する
     (Excelではフィールド名も読み込めてます)

    Sub AdoTest()
    Dim CN As Object, RS As Object
    Dim wAry, wKey As String, wFld As Variant, I As Long, J As Long
    Set CN = CreateObject("adodb.connection")
    wKey = Worksheets("Sheet1").Range("a1")
    With CN
      .Provider = "Microsoft.Jet.OLEDB.4.0"
      .ConnectionString = "Data Source=" _
          & ThisWorkbook.Path & "\テストDB.xls;" _
         & "Extended Properties=Excel 8.0;"
      .Open
    End With
    Set RS = CreateObject("ADODB.Recordset")
    RS.Open "Select * from [Sheet1$] Where 製品番号 Like '" & wKey & "%'", CN
    Worksheets("Sheet2").Cells.ClearContents
    Do Until RS.EOF
     With Worksheets("sheet2")
     J = J + 1
      If J = 1 Then
       I = 0
       For Each wFld In RS.fields
         I = I + 1
        .Cells(J, I) = wFld.Name
       Next
       J = J + 1
     End If
     I = 0
     For Each wFld In RS.fields
      I = I + 1
       .Cells(J, I) = RS(wFld.Name)
     Next
     End With
     RS.movenext
    Loop
    RS.Close: Set RS = Nothing
    CN.Close: Set CN = Nothing
    End Sub

■2618 / inTopicNo.7) Re[6]: 抽出条件にセル値を使うには?
□投稿者/ お茶 -(2006/07/14(Fri) 00:19:21)

    ありがとうございます。

    上記を手がかりにがんばってみます。
    ありがとうございました

■2619 / inTopicNo.8) Re[7]: 抽出条件にセル値を使うには?
□投稿者/ y sakuda -(2006/07/14(Fri) 01:35:24)
http://www16.plala.or.jp/ysakuda/

    余計なお世話ですが、私のコード試すのなら、一度Excelブックをデータベースと
    みなして動くの確認してからAccessに焼きなおすことをお勧めします。
    GoodLuck!

■2620 / inTopicNo.9) Re[8]: 抽出条件にセル値を使うには?
□投稿者/ お茶 -(2006/07/14(Fri) 12:27:56)

    y sakuda様
    できました!ありがとうございました。

    1.EXCELで一度外部データ取り込みを行い、マクロ記録にて抽出条件を
      入力して再実行したマクロを作る。・・・「A」
      取込先はSheet1のA2セル
    2.「A」を編集として、先頭に
    Dim wAry, wKey As String
    Sheets("Sheet1").Select
    wKey = Worksheets("Sheet1").Range("A1")
    Range("A2").Select
      を付加
    3.Withで始まる構文の中に抽出条件となる Like~ があるので
    Like '" & wKey & "%'
      に変更。
    4.あとは好みでカスタマイズ。

解決済み!
スポンサーリンク
INDEX
  • このエントリーをはてなブックマークに追加

コメント

※技術的な質問はMicrosoftコミュニティで聞いてください!

▲このページのトップへ