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

    [192030] VBAでのコピー入れ替えの方法-

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

    □投稿者/ はぴねす -(2020/05/19(01:01))
    □U R L/

      初めての投稿ですがよろしくお願いいたします。
      それぞれ、データと結果のシートがあったとします。
      データシートには
      番号,果物,月
      001,りんご,5月
      001,りんご,6月
      001,りんご,7月
      001,りんご,8月
      というデータがあります。
      結果シートには
      ID,フルーツ,月
      という項目(1行目)のデータが定義されています。

      データシートの内容をコピーし、結果シートに貼り付けたいのですが、
      id,月,フルーツ
      001,5月,りんご
      001,6月,りんご
      001,7月,りんご
      001,8月,りんご
      となるのでしょうか。

      やりたいことは、
      項目が違っていても格納できる、
      5月ー8月のカウント分行を作成したいです。
      よろしくお願いいたします。




    [192034] Re[1]: VBAでのコピー入れ替えの方法-

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

    □投稿者/ γ -(2020/05/19(12:31))
    □U R L/
      確認ですが、
      (1)
      結果シートの項目の順番が、説明のなかで二通りあります。
      ID,フルーツ,月
      id,月,フルーツ
      どちらかが記述ミスでしょうか。
      (2)
      "5月ー8月のカウント分行を作成したいです。"
      とありますが、データシートにはそれ以外の月のものもあって、抽出が必要ですか?
      それとも、まるまるコピーすればいいのですか?
      
      データシートの3列目のデータを、結果シートの2列目にコピーペイストする
      といった部分のコードはできているんでしょうか?
      詰まっているところはどのあたりでしょうか。
      
      
      




    [192041] Re[2]: VBAでのコピー入れ替えの方法-

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

    □投稿者/ はぴねす -(2020/05/19(17:26))
    □U R L/

      結果シートの項目が変わっていても、
      番号=ID 果物=フルーツ 月=月の列としてコピーしたいと考えています。

      データシートのA列が番号,001,001,001,001・・・とデータが入っていると、
      結果シートのA列が番号,001,001,001,001・・・と出るように。

      データシートのC列が月,5月,6月,7月,8月・・・とデータが入っていると、
      結果シートのB列が番号,,5月,6月,7月,8月・・・と出るように。

      繰り返す回数は項目を除く行数文と考えています。





    [192043] Re[3]: VBAでのコピー入れ替えの方法-

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

    □投稿者/ γ -(2020/05/19(18:01))
    □U R L/
      列ごとにコピーペイストする方法がよいかもしれませんが、
      フィルタオプションを使った別の方法を示します。
      
      2行目にあえてデータシートの見出しと同一のものを使ったものを一時的に挿入しておきます。
      
      <<結果シート>>
           A列    B      C 
      1行  id     月     フルーツ
      2    番号   月     果物
      3
      
      コードは以下。
      Sub test()
          Dim wsData  As Worksheet
          Dim ws      As Worksheet
          
          Set wsData = Worksheets("データ")
          Set ws = Worksheets("結果")
          
          wsData.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
              CopyToRange:=ws.Range("A2:C2"), Unique:=False
          ws.Rows("2").Delete Shift:=xlUp
      End Sub
      
      二つの見出し間の関係を与えなければ、コードがそれを自動判定するのは難しいでしょう。
      (1)
      データシートの1列を結果シートの1列目に
      データシートの2列を結果シートの3列目に
      データシートの3列を結果シートの2列目に
      というコードを書くか(脳内変換)
      
      (2)見出し間の対応表を別途用意して、何列目かを計算させて転記する。
      
      (3)転記の際だけ一時的に同一見出しを使用する(上記のコード)
      
      のいずれかになるでしょう。
      
      また、質問2にお答えがなかったが、フィルタオプションには、当然、
      月を絞り込ませる機能がありますから、
      その場合は、CriteriaRange引数で対応できます。
      


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

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



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

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

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


- Child Forum -
Edit:ゆう-G