Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


14597 / 76734 ←次へ | 前へ→

【67626】Re:三列が合致していないセルにチェック
回答  UO3  - 10/12/19(日) 9:05 -

引用なし
パスワード
   ▼Yoshim さん:

不具合原因そのものは2番目、3番目のセルにシート修飾がないことです。

If Ws1.Cells(i, 1) & Ws1.Cells(i, 2) & Ws1.Cells(i, 3) = _
       Ws2.Cells(k, 1) & Ws2.Cells(k, 2) & Ws2.Cells(k, 3) Then

で、通常はこれでいいと思いますが、文字連結した値を比較する場合

AA と ABB、AAA と BB。これらは共に AAABB となって同じと見なされます。
ですから、【セル内には登場しないと思われる特殊文字】を間に挟んで比較するのが
安全確実です。処理前にシート1の色を無色にすることも加えて、たとえば以下。

Sub Sample()
  Dim i As Long, k As Long
  Dim RowEnd1 As Long
  Dim RowEnd2 As Long
  Dim Ws1 As Worksheet
  Dim Ws2 As Worksheet
  Dim s1 As String, s2 As String
  
  Set Ws1 = Sheets(1)
  RowEnd1 = Ws1.Cells(Rows.Count, 1).End(xlUp).Row
  Set Ws2 = Sheets(2)
  RowEnd2 = Ws2.Cells(Rows.Count, 1).End(xlUp).Row
  Ws1.Cells.Interior.ColorIndex = xlNone
  For i = 2 To RowEnd1
    For k = 2 To RowEnd2
     s1 = Ws1.Cells(i, 1) & vbTab & Ws1.Cells(i, 2) & vbTab & Ws1.Cells(i, 3)
     s2 = Ws2.Cells(k, 1) & vbTab & Ws2.Cells(k, 2) & vbTab & Ws2.Cells(k, 3)
     If s1 = s2 Then Exit For
   Next k
   If k > RowEnd2 Then
     Ws1.Cells(i, 1).Interior.ColorIndex = 34
   End If
  Next i

End Sub

1 hits

【67477】三列が合致していないセルにチェック Yoshim 10/12/8(水) 16:09 質問
【67478】Re:三列が合致していないセルにチェック Jaka 10/12/8(水) 16:20 発言
【67479】Re:三列が合致していないセルにチェック Hirofumi 10/12/8(水) 17:47 回答
【67515】Re:三列が合致していないセルにチェック Yoshim 10/12/9(木) 21:41 お礼
【67621】Re:三列が合致していないセルにチェック Yoshim 10/12/18(土) 22:27 質問
【67626】Re:三列が合致していないセルにチェック UO3 10/12/19(日) 9:05 回答
【67627】Re:三列が合致していないセルにチェック Hirofumi 10/12/19(日) 9:10 回答
【67631】Re:三列が合致していないセルにチェック UO3 10/12/19(日) 23:33 回答
【67643】Re:三列が合致していないセルにチェック Yoshim 10/12/20(月) 22:18 お礼

14597 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free