5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
Matsumotoさんの投稿
(投稿ID: 3944)
でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。
結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。
小川 慶一さんのコメント
(コメントID: 5497)
[x] 結合演算子は本来文字列を結合するもの。
↑
OKです。
[y] でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。
↑
OKです。
[z] 結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。
↑
NGです。
以下の[a]と[b]を同一視されているのではないかと。
[a] 結合結果(すなわち、&で結合した直後にできあがったもの)は、文字列です。(まさに、上記[y]でゲストさんがおっしゃったとおりです)
[b] セルに値を投入したとき、そのセルに最終的に入る値は、セルの書式設定に依存する
たとえば、以下の式で変数 x に投入されるのは、 "31" という、長さ2文字の文字列です。
(「31」という数字ではなく、「"31"」という文字列)
[info]Sub hoge()
Dim x
x = 3 & 1 '[a] 変数 x には、文字列の "31" が入る
End Sub[/info]
さて、セルA1-A4のそれぞれが、以下の表示形式(書式)になっているとしましょう。
A1: 標準
A2: 数値
A3: 文字列
A4: 日付
(上記のそれぞれは、エクセルのダイアログ「セルの書式設定」のタブ「表示形式」から設定できます)
そのとき、以下のマクロを実行するとします。
さて、どうなるか。
[info]Sub fuga()
Dim x
x = 3 & 1 '[a] 変数 x には、文字列の "31" が入る
Range("A1").Value = x '[b-1] 数字の 31 が入る(書式が「標準」だから)
Range("A2").Value = x '[b-2] 数字の 31 が入る(書式が「数値」だから)
Range("A3").Value = x '[b-3] 文字列 "31" が入る(書式が「文字列」だから)
Range("A4").Value = x '[b-4] 日付の 1900/1/31 が入る(書式が「日付」だから)
End Sub[/info]
...。
ということです。
...という説明で、どうでしょう?
サンプルプログラム内のコメント[a], [b-1]~[b-4] は、それぞれ、サンプルプログラムを紹介する前の解説[a], [b]と対応しています。
ご確認ください。
というか、できれば、自分で手書きで同じプログラムを書いて、実行されてみると良いでしょう。
関連の解説を以下の2つの動画でしています。
上記[a], [b]に気をつけて見直してみてください。
○基礎講座第2章4 - セルの書式と、値の投入(この動画のひとつ前のものです)
https://forum.pc5bai.com/lesson/page/112
○基礎講座第2章5 - 文字列の結合(この動画です)
https://forum.pc5bai.com/lesson/page/113
まずは、以上のとおりです。
この説明で十分ご理解いただけるか?五分五分かな、と思っています。ので、フィードバックください (^^)/~
> 結合演算子は本来文字列を結合するもの。
> でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。
>
> 結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。
牧野千秋さんのコメント
(コメントID: 5994) 添付ファイルのダウンロード権限がありません
やりたいことは、「基礎データ」シートのA列とB列を連想配列に重複せずに格納したいというものです。
小川 慶一さんのコメント
(コメントID: 6003)
以下のとおりにすればとりあえずご希望に近いものにはなるかと思います。
dic.Item(KEY) = dic.Item(KEY) + 1 はコメントアウト。
Sheets("出力").Range("B1").Offset(i).Value = VKEYS(i)
は、右辺を以下のとおりに修正。
dic.Item(VKEYS(i))
> ファイルつけるの忘れていました。
> やりたいことは、「基礎データ」シートのA列とB列を連想配列に重複せずに格納したいというものです。
牧野千秋さんのコメント
(コメントID: 6004)
1つめ
名前だから文字列で""でくくっておかなければならないのですね
2つめ
おお、できました!
実は重複しないリストを作るため、別シートにピボットテーブルを作ってリフレッシュしていました(←けっこうおもしろい発想でしょう?)。
ありがとうございました。
小川 慶一さんのコメント
(コメントID: 6005)
> 1つめ
> 名前だから文字列で""でくくっておかなければならないのですね
「参照するクラスの名称を文字列型で指定する」ということです。
> 2つめ
こららも参考になるかと。
○10秒でできる!エクセルデータの「重複の削除」
https://forum.pc5bai.com/lesson/page/1280
> 小川先生
> 1つめ
> 名前だから文字列で""でくくっておかなければならないのですね
>
> 2つめ
> おお、できました!
> 実は重複しないリストを作るため、別シートにピボットテーブルを作ってリフレッシュしていました(←けっこうおもしろい発想でしょう?)。
> ありがとうございました。