[[20210124112344]] 『請求書に発注テーブルの特定列だけを抽出転記した』(吉信) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『請求書に発注テーブルの特定列だけを抽出転記したいのですが?』(吉信)

Sub ByADVFilter2()

    Range("発注テーブル").Columns(2).AdvancedFilter xlFilterCopy, , Range("I2"), True
    '「お客様」フィールドの重複を削除したリストを作成
    Set MyJHani = Range("I2").CurrentRegion

    For i = 2 To MyJHani.Rows.Count
        Sheets("テンプレート").Copy after:=Sheets(Sheets.Count)

        Set MySht = Sheets(Sheets.Count)

        MySht.Name = MyJHani.Cells(2).Value & "請求書"
        'テンプレートのシートをコピーしてレイアウトを整えた状態で転記する

        Range("発注テーブル").AdvancedFilter _
                    xlFilterCopy, MyJHani.Rows("1:2"), ここをどのように変更したらいいでしょうか?
MySht.Range("B2")

        With MyJHani
            .Rows(2).Value = .Rows(i + 1).Value
        End With
        'セルの削除をとりやめて、値を転記する方法に変更
    Next
    MyJHani.Clear
End Sub

< 使用 Excel:Excel2019、使用 OS:Windows10 >


状況の確認だけ

 Set MyJHani = Range("I2").CurrentRegion
↑でどんな範囲が格納されているのですか?

 MyJHani.Rows("1:2"), ここをどのように変更したらいいでしょうか?
↑で現状はどんな範囲が返ってきていて、どうなれば正解なのですか?

(もこな2) 2021/01/24(日) 11:40


 Range("I2").CurrentRegionにはお客様の名前の一覧
現状では発注テーブル全体の項目が返ってきます。
日付、お客様、商品1、商品名1の価格、商品名1の個数、商品名1の合計金額、商品2、商品名2の価格、商品名2の個数、商品名2の合計金額、商品3、商品名3の価格、商品名3の個数、商品名3の合計金額、総合計金額、備考欄:注意事項
の全項目が抽出転記されますが、この中より必要項目だけを抽出転記したいのですが、日付、商品1、商品1の個数、商品2、商品2の個数、商品3、商品3の個数、総合計金額だけを抽出転記したいのですが、コードをどの様書き換えればいいのか教えてください。
(吉信) 2021/01/24(日) 11:59

いや、そういうことじゃなくて

 Range("I2").CurrentRegion
↑はActiveSheetのI2セルを含む表範囲が取得されるわけですよね?
 その範囲は、こちらではわからないので【セル番地】を確認したかったわけです。

 MyJHani.Rows("1:2")
そして↑では取得した表範囲の1〜2行目と指定しているわけですが、なんとなれば正解だったのかを聞いてます。

(もこな2) 2021/01/24(日) 12:11


すいませんお客様一人一人のデータを振り分け特定の行だけを抽出転記はできないのでしょうか?
(吉信) 2021/01/24(日) 12:20

Range("発注テーブル").AdvancedFilter _
                    xlFilterCopy, MyJHani.Rows("1:2"), MySht.Range("B2")
ここというのはこの行全体のことなんです。

(吉信) 2021/01/24(日) 12:25


問題は、そこではなく、抽出先の指定の仕方では?

>MySht.Range("B2")

必要な見出しを、列挙しておけばよいです。

(マナ) 2021/01/24(日) 13:12


でしたねぇ・・・やっぱフィルタオプションは私にはむずかしい・・・
マナさんにお任せします。

(もこな2) 2021/01/24(日) 13:33


返事が遅れまして申し訳ございません。
Range("発注テーブル").AdvancedFilter _
                    xlFilterCopy, MyJHani.Rows("1:2"), MySht.Range("B2:I2")で範囲を指定して
 Sheets("テンプレート")のB2からI2の見出し行B2からI2に項目名を列挙すればいいのですね!!
本当にありがとうございました。
もう一つお願いがあります。

Range("発注テーブル").AdvancedFilter _

                    xlFilterCopy, MyJHani.Rows("1:2"), MySht.Range("B2:I2")では、Range("発注テーブル")の罫線もSheets("テンプレート")に転記抽出されてしまいますから文字だけを転記抽出するにはコードをどのように書き加えたらいいのでしょうか?ご指導のほどお願いいたします。
(吉信) 2021/01/24(日) 16:51

その場合は、
1)オートフィルタで抽出して、コピー値貼り付けコピー
2)フィルタオプションで、xlFilterinplaceで抽出して、コピー値貼り付け
3)フィルタオプションで、別の場所に抽出して、コピー値貼り付け

(マナ) 2021/01/24(日) 17:30


Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)どのようにかいていいのか分かりません教えてください1)
1)オートフィルタで抽出して、コピー値貼り付けコピー
2)フィルタオプションで、xlFilterinplaceで抽出して、コピー値貼り付け
3)フィルタオプションで、別の場所に抽出して、コピー値貼り付け
(吉信) 2021/01/24(日) 18:10

思いつきですが

テンプレートの書式を、条件付き書式で設定しておけば
マクロは現在のままでよいきがします。

(マナ) 2021/01/24(日) 18:17


必ず条件を満たすような数式を設定するとよいです。
例えば、

=$B$2<>""

そうすれば、条件付き書式が優先されるので
フィルタオプションの結果に影響されません。
 

(マナ) 2021/01/24(日) 18:23


条件書式を使えば=$B$2:$I$30:<>""の数式を満たす場合罫線を保つ事が出来ました。
AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)を(マナ)さん指導のほどよろしくお願いいたします。
1)オートフィルタで抽出して、コピー値貼り付けコピー
2)フィルタオプションで、xlFilterinplaceで抽出して、コピー値貼り付け
3)フィルタオプションで、別の場所に抽出して、コピー値貼り付け       
(吉信) 2021/01/24(日) 20:40

1)とか2)は少しだけ面倒
3)はフィルターオプションの利点が活かせるので

    Dim 抽出先 As Range

    Set 抽出先 = MyJHani.Range("C1:J1")
    Range("発注テーブル").AdvancedFilter _
                    xlFilterCopy, MyJHani.Rows("1:2"), 抽出先

    抽出先.CurrentRegion.Copy
    MySht.Range("B2").PasteSpecial xlPasteValues

(マナ) 2021/01/24(日) 21:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.