戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
vlookupや

    [195029] vlookupや-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ はる -(2022/07/06(13:05))
    □U R L/
      @例えばsheet1にはあらかじめ下記のデータが100行まで様々なメニューが入力済みとします。
         A        B      C
      1  ごはん      米     50
      2  カレーライス   米     50
      3  カレーライス    豚小間   30
      4  カレーライス   玉ねぎ   50
      5  カレーライス   人参    10
      6  カレーライス   じゃがいも 50
      7  天津丼      米     60
      8  天津丼      卵     50
      9  天津丼      カニ缶   30
      10  みそ汁      みそ    10
      11  みそ汁      だし    0.5
      12  スープ      コンソメ  0.5
      13  スープ      正油     1
      ・
      ・
      ・
      100
      
      Asheet2のA1とA2には検索したい値(例えば、A1 カレーライス、A2 スープ)を入力したとします。図形でボタンを作成し押すとvlookupによりsheet1のA1:c100の範囲から検索したメニューの行と列の分だけsheet3へ表示される様に作りたいと思っています。どうぞ、ご教授お願いします。
      
      B検索結果の例
      sheet3
      
         A        B      C 
      1  カレーライス   米     50
      2  カレーライス    豚小間   30
      3  カレーライス   玉ねぎ   50
      4  カレーライス   人参    10
      5  カレーライス   じゃがいも 50
      6  スープ      コンソメ  0.5
      7  スープ      正油     1
      
      Sub test()
      
         Dim i As Long
         Dim n As Long
         Dim Target As String
         Dim Sht1 As Worksheet
         Dim Sht2 As Worksheet
         Dim Sht3 As Worksheet
         Dim MyArea As Range
      
         Set Sht1 = Sheets("sheet1")
         Set Sht2 = Sheets("sheet2")
         Set Sht3 = Sheets("sheet3")
         
         Target = Sht2.Cells(1, 1).Value
         Set MyArea = Sht1.Range("a1:c100")
      
         For i = 1 To 3
         
              With ActiveSheet
              Sht3.Cells(1, i) = Application.WorksheetFunction.VLookup(Target, MyArea, i, False)
              End With
         Next i
         
      End Sub
      
      まだここまでの知識しかなく困っています。これではvlookupで一行だけしかsheet3へ処理しません。sheet1のA列にあるおなじメニューの行まで処理出来るのか?とsheet2のA1のメニューの値が終われば次にA2のメニューもあります。
      
      Target = Sht2.Cells(1, 1).Value
                ↑
                を変数にするんだろうなと思っています。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195030] Re[1]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ はる -(2022/07/06(13:17))
    □U R L/
      すみません、Dim n As Longを削除するのを忘れていました。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195031] Re[2]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ 便利機能 -(2022/07/06(13:55))
    □U R L/

      そういう時は、エクセルの便利機能オートフィルタを使いましょう。
      項目名は必要になると思います。

      もしくは、1行1行セルを見て判定。
      こっちの方がプログラム的には楽かも?




    [195032] Re[3]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ はる -(2022/07/06(14:23))
    □U R L/

      はじめまして、便利機能さん早速のアドバイスありがとうございます。
      超初心者がいきなりvlookupが使えるのでは?と思いネット検索していたら
      ここへたどり着いた次第です。

      1行1行セルをみて判定というアドバイスがとても興味を持ちました。
      はやりvlookupやif文を上手く使う事になりますか?




    [195033] Re[4]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ 便利機能 -(2022/07/06(15:48))
    □U R L/

      vlookupは、全然使わないです。
      sheet1のA1から、下に見ていき同じものがあれば、
      1列目から3列目までを複写。
      こんな感じに
      sheet2.Range("A1:C1").value = sheet1.Range("A1:C1").value

      取り合えず、ループを組んで書いてみる事です。
      こんな感じでも良いし。
      sheet2.Range("A1").resize(,3).value




    [195034] Re[5]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ はる -(2022/07/06(17:17))
    □U R L/

      便利機能さんお返事ありがとうございます。
      アドバイスいただいた事で私が上手くVBAが組める迄、時間がかかってしまうと
      思いますが頑張ります。




    [195036] Re[6]: vlookupや-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/07/06(18:06))
    □U R L/
      こんなので研究してみてください。
      
      Sub test()
          Dim i As Long
          Dim Target As Variant
          Dim Sht1 As Worksheet
          Dim Sht2 As Worksheet
          Dim Sht3 As Worksheet
          Dim MyArea As Range
          Dim rowToWrite As Long
          
          Set Sht1 = Sheets("sheet1")
          Set Sht2 = Sheets("sheet2")
          Set Sht3 = Sheets("sheet3")
          
          Set MyArea = Sht1.Range("a1:c100")
          
          For Each Target In Sht2.Range("A1:A2").Value
              
              For i = 1 To MyArea.Rows.Count
                  If Target = MyArea.Cells(i, "A").Value Then
                      rowToWrite = rowToWrite + 1
                      Sht3.Cells(rowToWrite, "A").Resize(, 3) = MyArea.Cells(i, "A").Resize(, 3).Value
                  End If
              Next i
              
          Next Target
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [195040] Re[7]: vlookupや-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ はる -(2022/07/07(08:25))
    □U R L/

      半平太さんおはようございます。
      昨日、直ぐにお返事できずにごめんなさい。
      とても参考になるVBAありがとうございます。
      ここから先は実際に組みたい献立作成へと繋げて行きたいと思います。
      便利機能さん・半平太さん本当にありがとうございました。
      スキルを上げてそれでもまた挫傷した時は過去の記事も参照し
      伺いたいと思います。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G