技術的に無関係なクライアント用のカスタムレポートを作成しようとしています。VBAマクロを条件でオートフィルタし、1つの列の表示結果を配列にコピーし、その配列で別のシートをオートフィルタします。
だからここに私は何をする必要があるかです:
私は入力ファイルとして二つの異なるワークブック持っている:ケースリスト(cases.csv
)および収入報告書(revenue.csv
)、Webサービスから出力されます。
ケースリストには、ケースファイル名(列K)とユーザー名(列W)が含まれています。すべてのケースとユーザーがリストされます。
収益報告書は、ケースファイル名(列C)、および収入データ(列T経由G)が含まれていますが、(私がすることによってフィルタリングする必要がある)に関連するユーザー名が含まれていません。
これらのリストのエントリの量は常に変化しますので、何か動的なものが必要です。
基本的には、特定のユーザーに割り当てられているケースのみを表示するように収益レポートを自動フィルタリングする必要があります。
これは私が最初の部分のために、これまで持っているものです。
Set MyRange = Range("A1").CurrentRegion
Selection.AutoFilter Field:=23, Criteria1:="User1"
Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Dim arr As Variant
arr = Selection
これは「User1
」に関連する唯一のショーケースにケースリストをオートフィルタ、その後、列K(ケースの目に見える結果をコピーします。 User1に関連付けられたファイル名)を配列に追加します。
次に、2番目のシート(revenue.csv
)の2番目のオートフィルタの基準としてその配列を使用して、User1に関連付けられたケースファイル名の収益情報が表示されるようにしました。
私は2番目の部分で立ち往生しています。好ましくは、CSVファイルとして両方のレポートを指定のディレクトリにダウンロードしたいとします(例としてC:\test\
としましょう)。
次に、このマクロが有効なワークブック(macro.xlsmと呼ぶ)を開き、両方のレポートのワークシートを自動的に読み込み、オートフィルタ>結果を配列>オートフィルタに再度実行します。
ここでは読み込みスクリプトで申し訳ありません。
Sub Button1_Click()
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
directory = "C:\test\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""
Workbooks.Open (directory & fileName)
For Each sheet In Workbooks(fileName).Worksheets
total = Workbooks("macrotest.xlsm").Worksheets.Count
Workbooks(fileName).Worksheets(sheet.Name).Copy _
after:=Workbooks("import-sheets.xlsm").Worksheets(total)
Next sheet
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
基本的に、私はその中のすべてのコードで彼らにこのmacro.xlsmを提供するだろう、と彼らがしなければならないだろうすべては、特定のディレクトリに2つのレポートをダウンロードし、オープンmacro.xlsm、その後、ボタンをクリックしていますレポートが読み込まれ、自動フィルタリングされ、[収入]シートは[User1]に関連付けられたケースのみでフィルタリングされます。
HELP!
HI Scott。ちょうど両方のファイルの "ケースファイル名"がユニークであると思っていますか?はいの場合は、配列と自動フィルタの代わりに辞書を使用してみてください。私の意見だけです。 – user2851376
@ user2851376 'cases.csv'は全てのケースの包括的なリストです(重複レコードはありません)。また、' revenue.csv'はどちらのケースでも重複しません。だから、ケースファイル名はユニークなものになるでしょう。オートフィルタで辞書を使用するにはどうすればよいですか? –
あなたの問題は解決しましたか? – nightcrawler23