teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード追記

2020/11/30 08:21

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -32,7 +32,18 @@
32
32
  End Sub
33
33
  ```
34
34
 
35
-
35
+ ---
36
36
  あるいは、関数で存在チェックしてもいいでしょう。
37
37
 
38
- [指定したデータがリスト内に存在するかどうかを確認する:Excel 一般|即効テクニック|Excel VBAを学ぶならmoug](https://www.moug.net/tech/exopr/0040056.html)
38
+ [指定したデータがリスト内に存在するかどうかを確認する:Excel 一般|即効テクニック|Excel VBAを学ぶならmoug](https://www.moug.net/tech/exopr/0040056.html)
39
+
40
+ VBAで関数を設定して、値に変換するという方法のコード例
41
+
42
+ ```vba
43
+ Sub Sample2()
44
+ With WorkSheets("all").Range("B2:B9")
45
+ .Formula = "=IF(COUNTIF(list!$A$2:$A$8,all!A2),"""",""new"")"
46
+ .Value = .Value
47
+ End With
48
+ End Sub
49
+ ```

1

コード追記

2020/11/30 08:20

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,6 +3,36 @@
3
3
 
4
4
  [Office TANAKA - VBA高速化テクニック[配列を使う]](http://officetanaka.net/excel/vba/speed/s11.htm)
5
5
 
6
+ コード例
7
+ ```vba
8
+ Sub Sample()
9
+ Dim ary_all()
10
+ ary_all = WorkSheets("all").Range("A2:A10000").Value
11
+
12
+ Dim ary_list()
13
+ ary_list = WorkSheets("list").Range("A2:A1000").Value
14
+
15
+ Dim ary_res() As String
16
+ ReDim ary_res(1 To UBound(ary_all), 1 To 1)
17
+
18
+ Dim i As Long, j As Long, bNew As Boolean
19
+ For i = 1 To UBound(ary_all)
20
+ bNew = True
21
+ For j = 1 To UBound(ary_list)
22
+ If ary_all(i, 1) = ary_list(j, 1) Then
23
+ bNew = False
24
+ Exit For
25
+ End If
26
+ Next j
27
+ If bNew Then ary_res(i, 1) = "新"
28
+ Next i
29
+
30
+ WorkSheets("all").Range("B2:B1000").Value = ary_res
31
+
32
+ End Sub
33
+ ```
34
+
35
+
6
36
  あるいは、関数で存在チェックしてもいいでしょう。
7
37
 
8
38
  [指定したデータがリスト内に存在するかどうかを確認する:Excel 一般|即効テクニック|Excel VBAを学ぶならmoug](https://www.moug.net/tech/exopr/0040056.html)