を転置しようとしたとき、私は私が転置しようとしている場合は、列Aの値が列BにVBA - 実行時エラー「13」の行に値
存在しているかどうかを確認するために別のワークシートに2つの列を比較しようとしています比較のために辞書に格納すると、実行時エラー '13'が発生します。ここで
は、コードは次のとおりです。
Sub Compare()
Dim rngA As Range, rngB As Range
Dim dict As Object, rw As Range
Dim a As Application, tmp As String
Dim Row1Last As Long
Dim Row2Last As Long
Set a = Application
Set dict = CreateObject("scripting.dictionary")
Set sht1 = Worksheets("list_Facility_BOS")
Set sht2 = Worksheets("List_Facility_PG")
With Sheets("list_Facility_BOS")
Row1Last = .Cells(Rows.Count, "G").End(xlUp).Row
End With
With Sheets("List_Facility_PG")
Row2Last = .Cells(Rows.Count, "H").End(xlUp).Row
End With
Set rngA = sht1.Range("G2:G" & Row1Last)
Set rngB = sht2.Range("H2:H" & Row2Last)
For Each rw In rngA.Rows
dict.Add Join(a.Transpose(a.Transpose(rw.Value)), Chr(0)), rw.Row
Next rw
For Each rw In rngB.Rows
tmp = Join(a.Transpose(a.Transpose(rw.Value)), Chr(0))
If dict.exists(tmp) Then
Else
rw.Cells(1).Interior.ColorIndex = 3
End If
Next rw
End Sub
私は別のワークシート内の別の20kの行の列に対して20K行のレコードの列を比較しようとします。このコード行ではエラー '13'が発生しました。
私はVBAプログラミングに秀でています。申し訳ありませんが、わかりやすく説明できません。私のコードに間違いがある場合は、私に知らせてください。
excelよりも多くの行がある場合、転置は失敗します。それはすべてです;) –
@DirkReichel、よろしいですか?これは、[最速の方法で見つけることができます] - 行を使用してExcelの範囲を使用する - マクロ - VBA](https://stackoverflow.com/questions/22685622/fastest-way-to- Excel-range-in-excel-macro-vba/22704708#answer-22704708を参照してください)。 @Dvidおそらく255文字以上のセル[vba-scripting-dictionary-run-time-error-13-type-mismatch](https://stackoverflow.com/questions/17549379/vba-scripting-dictionary-run-時間誤差-13型不一致#答え-17817522)?エラーの場合は、 'rw.value'の値を表示しないでください。 – BitAccesser
@BitAccesserは 'For Each rw In rng.Rows'の部分を見たことがありません。このように2^16の制限は決して打たれません...しかし、ただ一つの列を持つ' rw'は、 'rw.Value'は配列ではないので、転置することはできません。コード全体を読んでいればかなり分かります...(私はもっと頻繁にこれを行うべきです):P –