アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
行き詰ってしまったのでどうか教えてください。
EXCELは2013を使用しています。

売上表を修正しているのですがデータ量が多くてマクロで解決できないかと思っています。
sheet1 データ(項目は1行目でA列~N列まで)
sheet2 結果リスト(準、○、1、レ(ギュラー)

やりたいことはsheet1のA列のランクが【A】だった時にC~N列に結果リストの文字があれば
A列を【優】、結果リストになければ【良】にしたいです。
マクロを書いてみたのですがうまくいかず、アドバイスよろしくお願いします。

Sub 結果()
Dim i As Long, j As Long
Dim lastRow As Long, lRow As Long

lastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For j = 3 To 12
If Cells(i, 1) = "A" Then
If Cells(i, j) <> "レ" Then
Cells(i, 1) = "優"
Else
Cells(i, 1) = "良"
End If
End If
Next j
Next i
End Sub

「別シートにあるリストにあるか判別するマク」の質問画像

A 回答 (1件)

こんばんは!



>C~N列に・・・
とありますが、コードを拝見するとC~L列までとなっていますね。

質問文どおりN列までとしてみました(12列まで)
一例です。
尚、両シートとも1行目が項目行でデータは2行目以降にあるとします。
標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, k As Long
 Dim myRng As Range, wS As Worksheet
 Dim c As Range, myFlg As Boolean
  Set wS = Worksheets("Sheet2")
  With Worksheets("Sheet1")
   For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
    If .Cells(i, "A") = "A" Then
     Set myRng = .Cells(i, "C").Resize(, 12) '//←C~N列までを範囲にセット//
      For k = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
       Set c = myRng.Find(what:=wS.Cells(k, "A"), LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
         myFlg = True
         Exit For
        End If
      Next k
       If myFlg = True Then
        .Cells(i, "A") = "優"
       Else
        .Cells(i, "A") = "良"
       End If
        myFlg = False
    End If
   Next i
  End With
End Sub

※ 結局 「レ」については何も判断していません。

こんな感じで良いのでしょうかね。m(_ _)m
    • good
    • 0
この回答へのお礼

いつもありがとうございます!
そしてまた記載ミスがあったようで申し訳ありません。
Tom04さんには何度も助けられ本当に感謝です!

お礼日時:2019/05/12 23:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!