回答編集履歴

5

再修正

2020/07/10 17:59

投稿

tosi
tosi

スコア553

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  For Each MyRange In Range("E5:E74")
20
20
 
21
- MyAddr = MyRange.Address(RowAbsolute:=True, ColumnAbsolute:=True)
21
+ MyAddr = MyRange.Address
22
22
 
23
23
  MyFormat = "=ISERROR(VLOOKUP(" & MyAddr & ",$X$95:$X$125,1,FALSE))=FALSE"
24
24
 
@@ -88,10 +88,6 @@
88
88
 
89
89
  ```
90
90
 
91
- また、RowAbsolute:=True, ColumnAbsolute:=TrueはFalseより変更しています。
92
-
93
- 家のExcelがFalse指定で動作がになった為です。
91
+ また、MyRange.Address部分更しています。
94
-
95
- 別のExcelはFalseでも正常なので、個別の問題と思いますが、念の爲変更しています。
96
92
 
97
93
  尚、ユーザー関数は数多く使うと重くなってしまう特徴あります。

4

改行

2020/07/10 17:59

投稿

tosi
tosi

スコア553

test CHANGED
@@ -44,9 +44,7 @@
44
44
 
45
45
  (データベース関数を使えば出来るのでしょうか・・・・?)
46
46
 
47
- VBAでユーザー関数を作りましたので、これを標準モジュールへ貼り付けてVLOOKUPをVlookupRevMatchに
47
+ VBAでユーザー関数を作りましたので、これを標準モジュールへ貼り付けてVLOOKUPをVlookupRevMatchに入れ替えて動かして見て下さい。
48
-
49
- 入れ替えて動かして見て下さい。
50
48
 
51
49
  ```VBA
52
50
 

3

追記

2020/07/10 03:26

投稿

tosi
tosi

スコア553

test CHANGED
@@ -90,8 +90,10 @@
90
90
 
91
91
  ```
92
92
 
93
- 、RowAbsolute:=True, ColumnAbsolute:=TrueはFalseより変更しています。
93
+ また、RowAbsolute:=True, ColumnAbsolute:=TrueはFalseより変更しています。
94
94
 
95
95
  家のExcelがFalse指定で動作が変になった為です。
96
96
 
97
97
  別のExcelはFalseでも正常なので、個別の問題と思いますが、念の爲変更しています。
98
+
99
+ 尚、ユーザー関数は数多く使うと重くなってしまう特徴あります。

2

追記

2020/07/10 03:08

投稿

tosi
tosi

スコア553

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  For Each MyRange In Range("E5:E74")
20
20
 
21
- MyAddr = MyRange.Address(RowAbsolute:=False, ColumnAbsolute:=False)
21
+ MyAddr = MyRange.Address(RowAbsolute:=True, ColumnAbsolute:=True)
22
22
 
23
23
  MyFormat = "=ISERROR(VLOOKUP(" & MyAddr & ",$X$95:$X$125,1,FALSE))=FALSE"
24
24
 
@@ -35,3 +35,63 @@
35
35
  ```
36
36
 
37
37
  参考Url:[https://teratail.com/questions/267033](https://teratail.com/questions/267033)
38
+
39
+
40
+
41
+ (追記)
42
+
43
+ 基準セル値の中の一部一致で結果を返す事は関数では難しい様に思えます。
44
+
45
+ (データベース関数を使えば出来るのでしょうか・・・・?)
46
+
47
+ VBAでユーザー関数を作りましたので、これを標準モジュールへ貼り付けてVLOOKUPをVlookupRevMatchに
48
+
49
+ 入れ替えて動かして見て下さい。
50
+
51
+ ```VBA
52
+
53
+ Option Explicit
54
+
55
+ Function VlookupRevMatch( _
56
+
57
+ ByRef 検索値 As Range, _
58
+
59
+ ByRef 範囲 As Range, _
60
+
61
+ ByVal 列番号 As Integer, _
62
+
63
+ ByVal 検索方法 As Boolean _
64
+
65
+ ) As Variant
66
+
67
+ Application.Volatile
68
+
69
+ Dim MyRange As Range
70
+
71
+ Dim blnError As Boolean: blnError = True
72
+
73
+ For Each MyRange In 範囲
74
+
75
+ If InStr(検索値, MyRange) <> 0 Then
76
+
77
+ VlookupRevMatch = MyRange
78
+
79
+ blnError = False
80
+
81
+ Exit For
82
+
83
+ End If
84
+
85
+ Next
86
+
87
+ If blnError = True Then VlookupRevMatch = CVErr(xlErrNA)
88
+
89
+ End Function
90
+
91
+ ```
92
+
93
+ 尚、RowAbsolute:=True, ColumnAbsolute:=TrueはFalseより変更しています。
94
+
95
+ 家のExcelがFalse指定で動作が変になった為です。
96
+
97
+ 別のExcelはFalseでも正常なので、個別の問題と思いますが、念の爲変更しています。

1

行削除

2020/07/10 03:01

投稿

tosi
tosi

スコア553

test CHANGED
@@ -15,8 +15,6 @@
15
15
  Dim MyAddr As String
16
16
 
17
17
  Dim MyFormat As String
18
-
19
-
20
18
 
21
19
  For Each MyRange In Range("E5:E74")
22
20