![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
教えてください。
EXCELで3万件の商談情報があり、その情報に顧客情報をセットするようにマクロを作成しています。
顧客情報にある顧客コードをキーにしてCollectionオブジェクトを作成し、商談情報にある顧客コードを元にセットしているのですが、この顧客コードが英数の大文字と小文字が混在しています。
例えば、60000AABBと60000AaBbは違う顧客コードということになり、Collectionオブジェクトのキーに指定するとエラーとなります。
Collectionオブジェクトのキーを大文字・小文字を区別する方法はありますか?
もし、区別する方法がなければ、Collectionオブジェクト以外に何か良い方法はありますか?
No.5ベストアンサー
- 回答日時:
n-junです。
ご参考程度として新規Bookで試してみて下さい。
Sub try_next()
Dim myDic As Object
Dim s1 As String, s2 As String
Dim s1t As String, s2t As String
Dim s1n As String, s2n As String
Dim r As Range
Set myDic = CreateObject("Scripting.Dictionary")
s1 = "60000AABB": s1t = "鹿児島店": s1n = "001-0789-0123"
s2 = "60000AaBb": s2t = "神奈川店": s2n = "001-0123-4567"
'顧客コードをキーに、顧客名と電話番号を項目として
myDic.Add s1, Array(s1t, s1n)
myDic.Add s2, Array(s2t, s2n)
'A1~A2に顧客コードを代入
Range("A1").Resize(2).Value = Application.Transpose(Array(s1, s2))
'A列の顧客コーtどに対して、B・C列に顧客名と電話番号を代入
For Each r In Range("A1:A2")
r.Offset(, 1).Resize(, 2).Value = myDic.Item(r.Value)
Next
Set myDic = Nothing
End Sub
例えばこんな感じでしょうか?
すごいです!!!!!
思ったとおりの動きをしてくれました。
何ヶ月も悩んでいたのですが、すっきりしました。
早速使用させて頂きますm(_ _)m
No.6
- 回答日時:
FSOなどでDictionaryを使う方法が出来るわけですが、そういう高等な(初心者には内部の仕掛けが不明な)ものを使わずに
顧客コードは大文字小文字・全角半角などを強制的に統一した(修正)顧客コードを作る
修正顧客コードで商談情報データと顧客情報データをソートする。
顧客コードをマッチングキーにして、マッチングのロジックで情報を統合すするプログラムを組む。
(注)マッチングのロジックは基本情報処理試験やアルゴリズムの教科書を見てください。
総体的な処理完了時間が少ない(早い)はずです。
この回答への補足
ありがとうございます。
ただ・・・顧客情報と商談情報はセールスフォース(SFA)を使用していて、そこからデータを抽出してエクセルにて処理しています。
セールスフォースの方でも大文字・小文字の制御を問い合わせてもらったのですが、基本的に制御はおこなっていないということで回答されました。
各販売会社と共有しているシステムツールなので、こちらで勝手にコードを修正することができません。
処理時間が早いというのは、とても魅力的なので、使用できる方向性がないか、検討してみたいとおもいます。
No.1
- 回答日時:
Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
一例:
Sub try()
Dim myDic As Object
Dim s1 As String, s2 As String
Set myDic = CreateObject("Scripting.Dictionary")
s1 = "60000AABB"
s2 = "60000AaBb"
myDic.Add "60000AABB", Empty 'キー:60000AABB、項目:Empty
Debug.Print myDic.Exists(s1), myDic.Exists(s2) '判定結果
Set myDic = Nothing
End Sub
等は如何でしょう?
この回答への補足
ありがとうございます。
Dictionaryオブジェクトを利用すれば、思った処理ができそうです。
で、もうひとつ質問ですが。
キーに対してセットしたい項目が複数ある場合は、どのように処理すればいいですか?
【顧客情報】
顧客コード 顧客名 連絡先
6000AaBb 神奈川店 001-0123-4567
6000AABB 鹿児島店 001-0789-0123
この顧客情報の顧客名と連絡先を ↓↓↓↓↓↓↓↓ここにセットしたい。
【商談情報】
顧客コード 商品 売上日 顧客名 連絡先
6000AaBb オレンジ 2009/5/1 神奈川店 001-0123-4567
6000AABBアップル 2009/5/15 鹿児島店 001-0789-0123
6000AaBb アップル 2009/5/25 神奈川店 001-0123-4567
この場合、Dictionaryオブジェクトで顧客情報を作成すると思うのですが、キーは顧客コードで、項目を複数(顧客名と連絡先)にするにはどうしたらいいですか?(そんなことができますか?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
オブジェクトが見つかりません
-
実行時エラー 3265「要求された...
-
EXCEL VBA オートシェイプナン...
-
VBAで既に開いている別アプリケ...
-
Excel VBA Collection.add で R...
-
PowerPointVBAでスライドマスタ...
-
VBScriptでファイルの日時順(降...
-
Excelでフィルタをかけると警告...
-
VBA (Row とRowsの違いについて)
-
Word、VBAでの取り消し線文字の...
-
VBScriptでCSVファイルのデータ...
-
VBAで Set wb = Sheets(1).Cop...
-
ある文字列が全て数字であるか...
-
VBA:オートシェイプの線の長...
-
[VBA]CDOメッセージ送信エラー
-
VBAについてです。 初心者です...
-
VBで引数にDictionaryオブジェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
Excelでフィルタをかけると警告...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAからPDFファイルにパスワー...
-
エクセルマクロエラー「'Cells'...
-
PowerPointVBAでスライドマスタ...
-
VBScriptでファイルの日時順(降...
-
[VBA]CDOメッセージ送信エラー
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
VBAで作成するメール(開封確認...
-
オブジェクトが見つかりません
-
上下の位置揃えについて
-
VBからPDFファイル自動生成...
-
AccessVBAで「dim dbs as datab...
-
テキストボックス中の文字列の...
おすすめ情報