結論から申し上げますと
あるExcelファイル(Aファイルとする)から別Excelファイル(Bファイルとする)を開いたものの、
その開いたBファイルの中のデータを拾って演算し、Aファイルに吐き出すという事ができずにいます。
どの様にすべきか、またどんな部品を使うべきか、ご教授下さい。
使用言語はVBA,OSはWindows10です。
実現したい内容が以下です。
1:Aファイルにあるボタンを押下
2:Bファイルにあるデータを取得
3:そのデータの中で、重複データのみを合計したものと、重複していないデータを
Aファイルにあるボタンを押下したsheetに出力。
この際、重複しているデータは削除する。
現在は以下まで、進んでおります。
切り分けとして、まず、
・VBAによるファイル読み込みのプログラムを深く理解していない可能性
・Rangeによる指定に実は幅があり、どこのディレクトリのどのファイルのどのシートのRangeか。という様に指定できる可能性
というアプローチで調べながら作ってます。
以下が、実際にプログラムを作った内容です。(当然ながら、未完成です)
Sub 重複データを削除し合計を合算()
Dim myDic As Object
Dim myKey As Variant
Dim myItem As Variant
Dim myList As Variant
Dim i As Long
Dim sPath
Dim wb As Workbook
Dim ex As New Excel.Application
'//ファイル指定 sPath = "C:\webb\Total.xlsx" '//指定ファイルを開く Set wb = ex.Workbooks.Open(Filename:=sPath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True) Set myDic = CreateObject("Scripting.Dictionary") 'A列,B列のデータを配列に格納 myList = Range("A2", Range("A" & Rows.Count). _ End(xlUp)).Resize(, 2).Value '連想配列にデータを格納 For i = 1 To UBound(myList, 1) '地域名が空欄かチェック If Not myList(i, 1) = Empty Then If Not myDic.exists(myList(i, 1)) Then '重複しない地域名を取得 myDic.Add Key:=myList(i, 1), Item:=myList(i, 2) Else '売上金額を加算 myDic(myList(i, 1)) = myDic(myList(i, 1)) + myList(i, 2) End If End If Next '[都道府県] 重複していないリストを格納 myKey = myDic.keys '[売上] 各都道府県の合計を格納 myItem = myDic.items 'リストを出力 For i = 0 To UBound(myKey) Cells(i + 2, 5).Value = myKey(i) Cells(i + 2, 6).Value = myItem(i) Next '開放 Set myDic = Nothing
End Sub
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/06/03 06:10