Gizport
1 回答
0
Share (facebook)
97
view
全般

VBAマクロの初心者です 〔A1-F7〕にある都市データがあります...

VBAマクロの初心者です

〔A1-F7〕にある都市データがあります

このような表をDICTIONARYオブジェクトを使い集約し、
〔A9〕から始まる形式に変形したい

目的は「重複した都市データを1行にまとめる」です

> 結果として

DIC.Add "京都", array(10, 20, 30, 40, 50, 12, 12, 12, 11, 13)
DIC.Add "札幌", Array(2, 3, 4, 5, 5, 5)
DIC.Add "萩", Array(1, 2, 3, 4, 13, 15, 14, 15, 11)

で得られるようなオブジェクトを作りたい

現在は以下の部分までしか出来ていませんが

以下のリストにて●印のある行(?????-1,2)には、どのようなコードを書けば実現できるのでしょうか?

?????-1には、京都であれば セル範囲 B1-F1をセットで登録できるコード
?????-2には, 京都であれば、最初のループでB4-D4、次のループでB6-C6 を一括登録するコード
に当たります
セットで、という意味は「RANGEオブジェクトをバリアントで移行させるほうが高速だ」というページを
見たからと実務的な件数が理由のためです

なお、S,I,KEY,ITEMは未だ未使用ですが、出力のときに使う予定にしています
------------------------------------------------------------------
Sub TRANFER2()

Dim S, SDATA
Dim DIC As Object
Dim I As Integer
Dim STR, OTR As String

Dim KEY, ITEM

STR = "A1"
OTR = "A9"

Set DIC = CreateObject("Scripting.Dictionary")
SDATA = Range(STR).CurrentRegion

For I = 1 To UBound(SDATA, 1)
If Not DIC.Exists(SDATA(I, 1)) Then
'
DIC.Add SDATA(I, 1), ?????-1 '●
'
Else
'
?????-2 '●
'
End If
Next
------------------------------------------------------------------
システムは windows xp sp3
エクセルバージョンは 97(^^); ですが「DICTIONARYオブジェクト」は使えるように参照設定してます

以上、手数をお掛けしますが、よろしくご教示下さい

//
Yahoo!知恵袋 4863日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
sunshellsalohaさん、こんにちわ。。

【追記】
やはり、配列処理の方がセルアクセスより早いのですネ。。
もっと勉強しなきゃ…。
「カンニング」の件OKです。わたしも現認しました。。
いつかはみんな間違いなく死んじゃうのだから、「仲良く」しなきゃ!

【最初の回答】
初心者なので、、ちょっとややこかったです。。
ちょっと忙しくって、説明はあとから付けますネ。。

Itemの追加はPreserveキーワードで要素数を1個ずつ増やしていけば出来ました。
でも、最初のKeyを登録するときに「複数のItem」を一気にセットできず、、
1度最初の数値をセットして、Key登録してから上記の要領でItemを追加しました。
ちゃんと理解していないので、試行錯誤でした。。

Sub TRANFER7()
Dim SDATA, myVal As String
Dim DIC As Object
Dim I As Long, myCnt As Long
Dim STR, OTR As String
Dim KEY, k As Long
STR = "A1"
OTR = "A9"
SDATA = Range(STR).CurrentRegion.Value '元のデータを配列に入れる。
Set DIC = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(SDATA) '配列の1列目を上から順に。
myVal = SDATA(I, 1)
myCnt = WorksheetFunction.Count(Rows(I)) '当該行の数値の個数。
If DIC.exists(myVal) Then 'Keyが登録されていたら、
KEY = DIC(myVal) 'KeyをKEYに置き換えて、
For k = 2 To myCnt + 1 '数値の列数分。
ReDim Preserve KEY(UBound(KEY) + 1) 'Itemの要素を1個増やして、
KEY(UBound(KEY)) = SDATA(I, k) '配列中の数値をItemに格納。
Next k
Else 'Keyが登録されていなかったら、
KEY = Array(myVal, SDATA(I, 2)) '1度最初の数値を登録して、
DIC(myVal) = KEY 'DICのKeyに登録して、
For k = 3 To myCnt + 1 '当該行の残りの列数分だけ。
ReDim Preserve KEY(UBound(KEY) + 1) 'Itemの要素を1個増やして、
KEY(UBound(KEY)) = SDATA(I, k) '配列中の数値をItemに格納。
Next k
End If
DIC(myVal) = KEY
Next
Range(OTR).CurrentRegion.ClearContents 'A9の周りのデータをDel。
I = 0
For Each KEY In DIC.Items 'DIC内のKeyを探して、、
I = I + 1
Range(OTR).ITEM(I, 1).Resize(, UBound(KEY) + 1).Value = KEY 'Keyごとに吐き出す。
Next KEY
Range(OTR).CurrentRegion.Borders.LineStyle = xlContinuous '当該範囲に罫線。
Set DIC = Nothing
End Sub
Yahoo!知恵袋 4861日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
67
Views
質問者が納得体験記見つけました。参考になるかと。 http://takechi-tateki.com/ガジェット/スマートフォン/sony-xperia-z-ultra-lte-c6833-をイーモバイルのgl07s-simで使う設定方法.html
4127日前view67
全般
34
Views
質問者が納得状況が良くわからないのですが >>設定にて項目の一番長い時間が30分 具体的に何の項目を30分にセットしているんでしょうか? その携帯には独自の節電機能でNXエコやアプリ電池診断と言うのが存在するようですが、それらの機能を有効にしていませんか?継続利用するつもりのアプリを勝手に停めるような携帯の節電機能は多いですよ。 また、使っているアプリの名称はなんですか?アプリの正確な名称を書いて下さい。
3816日前view34
全般
41
Views
質問者が納得Dドライブがないということは,リカバリエリアも消してしまっている可能性があります。 ディスクの管理で見るとよいでしょう。 リカバリエリアがなければ,消してしまっていると思います。 不思議なのはリカバリエリアもないのに,リカバリディスクを作成できたということ。 リカバリメディアはここから購入できます。 http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=008030#a02 リカバリメディアがあるとします。 電源を入れてすぐディスクを入れるとのこ...
3847日前view41
全般
67
Views
質問者が納得結論から言えば使えます。 しかしマイクはちょっと チョイスミスですね。 それはただのカラオケマイクですから。 まぁ歌を録るわけじゃないし 大丈夫でしょうけど。 生放送機ならオススメは TASCAM US-322ですね。 主に歌い手や歌枠の生主向けですが 放送中にBGMを流せるのは勿論 声にエフェクトをかけれます。 あと、このインターフェースには コンデンサマイク用の ファンタム電源がついてます。 プロ音響規格のダイナミックマイクなら 誤ってファンタム電源を かけてしまっても安全な回路が 施されていますが、...
3914日前view67
全般
76
Views
質問者が納得ニコンのコマンダーですとSU-800ですね。 元々マクロツインライト用のコマンダーなので、赤外通信の飛びは非常に良くないです。 YONGNUOのTTLラジオスレーブは最近ニコン用が出てきましたが、機種によってはかなり動作が怪しいようですのであまりお勧めできません。 そもそも、この手の海外製品は大半が日本国内の電波法に準拠していない(技適マークを取得していない)ので、厳密に言えば使用が違法な製品です。 販売すること自体は違法でないことと価格が極端に安いことで、近年は多く出回っていますが…。 合法的に最も確実...
3936日前view76

取扱説明書・マニュアル

672view
http://www.nttdocomo.co.jp/.../F-11D_J_01.pdf
68 ページ3.50 MB
もっと見る

関連製品のQ&A