回答編集履歴
3
「この種のエラーを調べる方法について」を追加
answer
CHANGED
@@ -1,10 +1,28 @@
|
|
1
|
+
# 原因について
|
1
2
|
おそらく、シート「情報_01」のA列(「管理番号(D+E)」の列)に入っている管理番号のデータが数値として入っているため、VBA 条でString 型として定義されている変数 「管理情報」とのマッチングでマッチしないのだと思われます。
|
2
3
|
ISNUMBER()関数などで当該セルを確認してみてください、おそらくTRUE となると思います。
|
3
4
|
|
5
|
+
# 解決方法
|
4
6
|
解決方法としては、以下のように、当該列のデータを文字列にすることが考えられます。
|
5
7
|
|
6
8
|
0. 当該列の選択し、セル書式で表示形式を「文字列」にする。
|
7
9
|
0. 当該列のデータをテキストエディタなどにコピーしたのち、再度貼り付ける。
|
8
10
|
|
9
11
|
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
10
|
-
理由は、「管理番号」が数値というよりもIDとして扱われていると思われるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
12
|
+
理由は、「管理番号」が数値というよりもIDとして扱われていると思われるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
13
|
+
|
14
|
+
# この種のエラーを調べる方法について
|
15
|
+
Excel の関数を VBA で使っていて思った通りに動かない場合は、
|
16
|
+
いったん VBA から離れて、元のExcel の関数で動作を確認してみるのが
|
17
|
+
早道だと思います。
|
18
|
+
|
19
|
+
今回の場合なら、同一ブックに適当なシートを追加するなりして、
|
20
|
+
適当なセルに以下のような式を入れてみれば、
|
21
|
+
すくなくとも、VBAの問題か、Excel 関数の問題かの切り分けはすぐにできます。
|
22
|
+
|
23
|
+
```Excel
|
24
|
+
=VLOOKUP(A1, 情報_01!A1:D3, 2, FALSE)
|
25
|
+
```
|
26
|
+
※A1 は任意のセルを指定
|
27
|
+
|
28
|
+
ここまで調べて、Excel 関数の問題だと判明した状態なら、Excel の問題として質問できるので、回答できる人も多くなり、より良い回答がより速く得られるでしょう。
|
2
記述ミスの修正
answer
CHANGED
@@ -7,4 +7,4 @@
|
|
7
7
|
0. 当該列のデータをテキストエディタなどにコピーしたのち、再度貼り付ける。
|
8
8
|
|
9
9
|
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
10
|
-
理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
10
|
+
理由は、「管理番号」が数値というよりもIDとして扱われていると思われるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
1
解決方法を追加しました。
answer
CHANGED
@@ -1,2 +1,10 @@
|
|
1
1
|
おそらく、シート「情報_01」のA列(「管理番号(D+E)」の列)に入っている管理番号のデータが数値として入っているため、VBA 条でString 型として定義されている変数 「管理情報」とのマッチングでマッチしないのだと思われます。
|
2
|
-
ISNUMBER()関数などで当該セルを確認してみてください、おそらくTRUE となると思います。
|
2
|
+
ISNUMBER()関数などで当該セルを確認してみてください、おそらくTRUE となると思います。
|
3
|
+
|
4
|
+
解決方法としては、以下のように、当該列のデータを文字列にすることが考えられます。
|
5
|
+
|
6
|
+
0. 当該列の選択し、セル書式で表示形式を「文字列」にする。
|
7
|
+
0. 当該列のデータをテキストエディタなどにコピーしたのち、再度貼り付ける。
|
8
|
+
|
9
|
+
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
10
|
+
理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|