
「データ」というシートのJ列データを元に、重複しないリストを
作成したいのですが、「データ」にレコードが1件しかないと
> For Each c In varData
で「型が一致しません」というエラーになってしまいます。
2件以上あると問題なく処理ができるのですが、1件のときに
うまく回避させる方法はありますでしょうか。
'データシートのキーワードを重複しないリスト化してA列にコピー
Dim sh2 As Worksheet
Dim myDic As Object, myKey As Variant
Dim c As Variant, varData As Variant
Set sh2 = ThisWorkbook.Worksheets("Sheet1")
Set myDic = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Worksheets("データ")
varData = .Range("J3", .Range("J" & Rows.Count).End(xlUp)).Value
End With
For Each c In varData
If Not c = Empty Then
If Not myDic.Exists(c) Then
myDic.Add c, Null
End If
End If
Next
myKey = myDic.Keys
'出力
With sh2
.Range("A:A").ClearContents
.Range("A4").Resize(myDic.Count) = Application.WorksheetFunction.Transpose(myKey)
End With
Set myDic = Nothing
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
'* =追加した行
If IsArray(varData) Then '*
For Each c In varData
'(中略)
Next
Else '*
myDic.Add varData, Null '*
End If '*
myKey = myDic.Keys
'出力
(以下同じ)
No.1
- 回答日時:
c と varData は Range として定義したほうがいいでしょう。
・・・
Dim c As Range, varData As Range
・・・
Set varData = .Range("J3", .Range("J" & Rows.Count).End(xlUp))
・・・
If Not c.Value = Empty Then
If Not myDic.Exists(c.Value) Then
myDic.Add c.Value, Null
・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
Excelでシートの違うデータでグ...
-
エクセル マクロ "特定の日付...
-
エクセル 縦に長い表の印刷時...
-
【マクロ】同じフォルダ内にあ...
-
VBAで CTRL+HOMEの位置へ移動...
-
ユーザーフォームで別シートを...
-
他のシートの一番下の行データ...
-
エクセルで複数シートからデー...
-
CMOS-IC CD4007UBEのnmosfetの...
-
【マクロ】元データを別ファイ...
-
エクセルVBAで、特定文字から始...
-
Excelで日付変更ごとに、自動的...
-
【Excel】マクロでグラフ系列に...
-
Excelマクロ 差分抽出の方法が...
-
複数シートのデータを行列を入...
-
エクセル データーベース 削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
EXCELで2つのファイルから重複...
-
エクセル 縦に長い表の印刷時...
-
Googleスプレッドシートフィル...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
時間帯の重複を除いた集計について
-
Excel 売上管理シートに入力し...
-
他のシートの一番下の行データ...
-
エクセルで名簿を50音で切り分ける
-
エクセルVBAで、特定文字から始...
-
Excelファイルの容量が異常に大...
-
【マクロ】同じフォルダ内にあ...
-
エクセル マクロ "特定の日付...
-
EXCEL の表を一行ずつシートに...
おすすめ情報