
No.7ベストアンサー
- 回答日時:
Dictionaryは重複データは入れられないけど
使い道、取り出す時どうするのかな・・?
添え字を後から削除する必要が無ければ
If Not map.Exists(ary(i)) Then
Call map.Add(ary(i), CStr(i))
Else
Call map.Add(ary(i) & "|" & n, CStr(i))
n = n + 1
End If
必要があれば出力時、instr ・・Split などで
もし、重複データは不要なら #2様が回答されている通り
If Not map.Exists(ary(i)) Then Call map.Add(ary(i), CStr(i))
で良いと思いますよ
No.9
- 回答日時:
あとは
[VBA]ArrayListの使い方を知れば動的配列も解決!
https://y-moride.com/vba/arraylist-how-to-use.ht …
こちらを使うか。
ただwin10と相性が悪い場合もあるような記事も見かけたので、
他だとDicを2つ使うか?
No.8
- 回答日時:
配列の何番目って提示しているサイトにヒントが
For k = 0 To 10000 ' To map.Count - 1
If ("8" = ary(k)) Then
'// この時点の変数kの値が検索文字列がある配列の位置になる
Exit For
End If
Next
記載されていますよ。
No.5
- 回答日時:
#4
なるほど・・
何をされたいか良く分からないのですが・・ごめんなさい
If Not Dic.exists(Cells(i, 1).Value) Then
Dic.Add ary(i, 1).Value, ary(i, 2).Value
Else
Dic.Add ary(i, 1).Value & "|" & n, ary(i, 2).Value
n = n + 1
End If
keyに添え字付加?後でSplit出来るように"|" とか?
取り出す処理負荷どうかな・・・少し乱暴?
No.4
- 回答日時:
こんばんは
>dictionary を使用する目的が良く分かりませんが
配列を作るのにdictionaryを使用すると言う事でしょうか?
重複データを除く為にはよく使われますが、入れると言う事であれば、
違う方法が良いのではないかと思います
itemに添え字を付けるとかも出来るとは思いますが。。
既に配列が有ってその中には重複データも含まれている内容を調べる場合
調べる内容にもよりますが、べたに考えると配列内をループで探せばよいですね
参考コード
Dim i, j, ary
ary = Range("A1:F10")
For i = LBound(ary, 1) To UBound(ary, 1)
For j = LBound(ary, 2) To UBound(ary, 2)
If ary(i, j) = "keyword" Then Debug.Print ary(i, j); " = 行 :"; i; " 列 :"; j
Next
Next
aryは2次元配列
A1:F10範囲内のキーワードを探して 行№と列№を出力します
探す方法は調べる内容にもよりますが、色々あると思いますので参考サイト
https://www.sejuku.net/blog/70270
No.3
- 回答日時:
No.2です。
老眼です。
http://officetanaka.net/excel/vba/function/Join. …
http://officetanaka.net/excel/vba/function/instr …
1次元配列なら
joinで1行の文字列にしinstrで存在しているならどこにあるかを調べる。
存在してなければ0になる。
if instr(join(配列変数, "_"), "調べたい値")>0 then
'存在する時
else
'存在しない時
end if
No.2
- 回答日時:
エラーが出るそのコードが知りたいですが。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
最初の方のコード
If Not myDic.exists(Cells(i, 1).Value) Then
『もしkeyが既に存在してなければ
が良く使ってます。
Not を消せば
『もしkeyが存在していれば』になりますね。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
何故ただのvariant型と定義された配列はvariant型の配列の引数に代入できないのですか?
Visual Basic(VBA)
-
エラー処理
Visual Basic(VBA)
-
3つのプロシージャをまとめたら実行時エラー発生で対応不能
Visual Basic(VBA)
-
4
excel2021で実行できないマクロ。どこを直したらいいのか
Visual Basic(VBA)
-
5
VBA ユーザーフォーム
Visual Basic(VBA)
-
6
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
7
エクセルのマクロで
Visual Basic(VBA)
-
8
VBAで教えて頂きたいのですが?
Visual Basic(VBA)
-
9
Vba 電卓のテキストボックスに上下に分かれた分数の表示方法
Visual Basic(VBA)
-
10
Vba テキストボックスでボックスのサイズ超えると文字列入力できない
Visual Basic(VBA)
-
11
Vba コマンドボタンイベントの共通化
Visual Basic(VBA)
-
12
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
-
13
Excel VBA シートを追加後に余分なシートを削除する、の意味
Visual Basic(VBA)
-
14
2つのVBAを一緒にしたら機能しなくなりました(エクセル)
Excel(エクセル)
-
15
Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。
Visual Basic(VBA)
-
16
エクセルはマクロを使用するのでパソコンに良くないので使用しないでと言われた。「なぜ?」
Excel(エクセル)
-
17
excel vbaでvlooupの変数がわかりません。
Visual Basic(VBA)
-
18
VBAって、将来的に廃れますか?
Visual Basic(VBA)
-
19
evcel VBAについて
Visual Basic(VBA)
-
20
この関数と同じ処理をVBAで行うにはどうしたら良いでしょうか? これは、1列の中に同じ値が複数存在し
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAで配列の計算
-
5
int型配列の一括初期化
-
6
遅延バインディングを使用でき...
-
7
For文と配列
-
8
VB.net 引数で配列変数を渡す際...
-
9
VBA 配列数式的に一括してR...
-
10
配列の要素数を超えた参照のコ...
-
11
キーボードのQWERTY配列の本当...
-
12
バイト配列の編集
-
13
マップチップの当たり判定の出し方
-
14
ジャグ配列とは
-
15
IF関数でEmpty値を設定する方法。
-
16
変数を動的に作るには?
-
17
VB.NET2008で麻雀プログラミング
-
18
重複なしでランダムに画像を表...
-
19
五目並べのプログラムを配列と...
-
20
動的配列が存在(要素が有る)か...
おすすめ情報
公式facebook
公式twitter
しかしそうすると処理が遅いのが欠点ですよね?
しかし要素の字数が2文字以上だと有効では無いですよね?
https://vbabeginner.net/convert-array-to-associa … このサイトのような事をしたいです。
特定の文字列が配列の何番目の位置にあるかを知りたいのです。
しかしそれだと、dictionaryを利用する方法より処理が遅いです。