Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 : Excel 2013)
範囲指定付きデータの抽出と入力
投稿日時: 18/09/11 16:44:37
投稿者: Mikky777

エクセル上に範囲を指定して原産国データを表示させたいのですが、
範囲指定の方法が分からないため、頓挫しております。
 
以下、同じコードの原産国を★集計行の原産国欄にまとめて表示させたいのですが、
コード欄の行数が毎回変化するため、どのように範囲指定すべきかが分かりません。
 
現状は★集計行の原産国1つ前の行の値をとる、という制御にしており、
複数の原産国表示には対応しておりません。
 
    コード  原産国
    りんご         CN
    りんご          MY
    りんご         CN
★    りんご 集計     CN →<理想>MY&CNと表示
    みかん JP
    みかん JP
★    みかん 集計     JP
    バナナ         CN
    バナナ         CN
    バナナ          DE
    バナナ         CN
★    バナナ 集計     CN →<理想>DE&CNと表示
 
良い方法があればぜひ教えていただきたいです。
恐れ入りますがよろしくお願いいたします。

回答
投稿日時: 18/09/11 23:11:03
投稿者: simple

既に集計行があるという前提です。
前提が違っていたら、適宜修正してください。
 

Sub test()
    Dim dic     As Object
    Dim k       As Long
    Dim s       As String
    Dim country As String

    Set dic = CreateObject("Scripting.Dictionary")

    For k = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        s = Cells(k, 1).Value
        country = Cells(k, 2).Value
        If InStr(s, "集計") > 0 Then
            Cells(k, 2).Value = Join(dic.keys, " & ")
            dic.RemoveAll
        Else
            dic(country) = Empty
        End If
    Next
End Sub

投稿日時: 18/09/13 19:46:35
投稿者: Mikky777

Simpleさん、ご返事ありがとうございます!
お礼が遅くなり申し訳ありません。
 
配列を使った方法があるのですね。
集計行は元々あるという前提で問題ないので、
教えていただきました方法でやってみます。
ありがとうございます!