質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

730閲覧

VBAを使い、表よりデータを抽出して重複を削除したい

yuusu

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2018/06/24 02:50

前提・実現したいこと

はじめまして、VBAに関してご質問いたします。
素人なのでへんな質問でしたら申し訳ございません。

EXCEL表よりA列B列の値を抽出してA列をキーにして
キーの重複を排除して、B列の値を追記していきたいのですが
やり方が全く分かりません。
ちなみにやりたいことは以下のようなことです

KEY DATE
りんご 10
みかん 12
もも 8
ぶどう 11
みかん 9
ぶどう 14
もも 7
りんご 13

りんご 10,13
みかん 12,9
もも 8,7
ぶどう 11,14

ヒントだけでもお教え願えませんでしょうか
申し訳ありませんがよろしくお願いします。

試したこと

インターネットで検索いたしましたが全く分かりませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/06/24 05:01

エクセルのバージョンは何ですか?
yuusu

2018/06/24 08:54

2013です
guest

回答3

0

ベストアンサー

VBAて重複排除をする場合は、Dictionaryオブジェクトを使うのが定番ですね。

出力先が不明ですか、同じシートのD列E列に出力するとして、下記のような感じでどうですか。

vba

1Public Sub Test() 2 Dim dic As Object, r(), i As Long 3 4 Set dic = CreateObject("Scripting.Dictionary") 5 r = Range("A1").CurrentRegion.Value '元データを配列に格納 6 7 For i = 1 To UBound(r) 8 If dic.Exists(r(i, 1)) Then 9 dic(r(i, 1)) = dic(r(i, 1)) & "," & r(i, 2) 10 Else 11 dic(r(i, 1)) = r(i, 2) 12 End If 13 Next 14 15 Range("D1").Resize(dic.Count, 1).Value = WorksheetFunction.Transpose(dic.Keys) 16 Range("E1").Resize(dic.Count, 1).Value = WorksheetFunction.Transpose(dic.Items) 17End Sub 18

投稿2018/06/24 06:05

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuusu

2018/06/24 08:50

ご回答ありがとうございます。 出力に関してもう一点ご質問がございます。 出力先をC列の同じセルとして前後に文字列を入れたいと思っています 今年の”りんご”は”10,13”です このように文字列+変数1+文字列+変数2+文字列のようにできますでしょうか
yuusu

2018/06/24 10:33

ご回答ありがとうございました。 上の質問は何とかなりそうなので気にしないでください。 ソースコードを参考にいたします。
guest

0

VBAなど不要。そう、シェル芸ならね!

bash

1$ cat list 2りんご 10 3みかん 12 4もも 8 5ぶどう 11 6みかん 9 7ぶどう 14 8もも 7 9りんご 13 10$ cat list|awk 'a[$1]{$2=","$2}{a[$1]=a[$1]$2}END{for(i in a){print i,a[i]}}' 11みかん 12,9 12もも 8,7 13ぶどう 11,14 14りんご 10,13

投稿2018/06/24 06:14

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuusu

2018/06/24 08:20

ご回答ありがとうございます。 今回はVBAで作成しようと思いますので、 シェルで作成する際は参考にさせていただきます。
guest

0

アウトプットのレイアウト詳細もほしいですね。
例えば、
|A列|B列|
|KEY|DATE|
|りんご|10|
|りんご|13|
の場合は重複対象だと思うのですが、
B列の10及び13はどういうレイアウトで出力しようとしているのでしょうか。

投稿2018/06/24 03:54

ChoroQ

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuusu

2018/06/24 08:18

アウトプットは |KEY|DATE| |りんご|10|りんご 10,13 |りんご|13|みかん 12,9 |みかん|12| |みかん|9| . . . のようにC列のセル内に出力したいと思っています
ChoroQ

2018/06/24 08:39

でしたら下記のhatena19さんの回答ソースから、出力先セルいじればいけちゃいますね頑張ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問