• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA:同じ文字列データの比較がうまくいかない例)

VBA:同じ文字列データの比較がうまくいかない例

このQ&Aのポイント
  • VBA初心者がシートMから契約番号のデータを変数入力し、Aシートに転記するプログラムがうまく動かない。同じ文字列が入っていても比較がうまくいかず、データの転記ができない。
  • プログラムでは、シートMで契約番号のデータを変数に代入し、Aシート内の契約番号と比較しようとしている。しかし、同じ文字列が入っているにもかかわらず、同一とみなされずデータの転記ができない。
  • どのようにすれば、同じ文字列を正しく比較し、データの転記ができるようになるか、教えて欲しい。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 コードをよく見させてもらいました。 結局こういうコトをしたいのでしょうか? Sheet「A」のA列に重複がないのであれば簡単ですが、そこら辺は実際のデータが判らないので コードで判断して、両方のコードを載せておきます。 標準モジュールにコピー&ペーストしてマクロを試してみてください。 Sub Sample1() 'Sheet「M」に重複がない場合 Dim i As Long, k As Long, c As Range Dim wS1 As Worksheet, wS2 As Worksheet, myArray Set wS1 = Worksheets("M") Set wS2 = Worksheets("A") For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row Set c = Range(wS2.Cells(6, "A"), wS2.Cells(216, "A")).Find(what:=wS1.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then wS2.Cells(c.Row, "A").Font.Color = vbBlue With wS2.Cells(c.Row, "J").Resize(, 3) .Value = wS1.Cells(i, "I").Resize(, 3).Value .Font.Color = RGB(0, 112, 192) End With End If Next i End Sub Sub Sample2() 'Sheet「M」に重複がある場合 Dim i As Long, k As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("M") Set wS2 = Worksheets("A") For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row For k = 6 To 216 If wS1.Cells(i, "A") = wS2.Cells(k, "A") Then wS2.Cells(k, "A").Font.Color = vbBlue With wS2.Cells(k, "J").Resize(, 3) .Value = wS1.Cells(i, "I").Resize(, 3).Value .Font.Color = RGB(0, 112, 192) End With End If Next k Next i End Sub ※ 実際のレイアウトが判れば具体的なアドバイスができると思います。 まずはこの程度で・・・m(_ _)m

thosotani
質問者

お礼

他にいただいたアドバイスでもうまく動かなかったのでいただいたコードを使わせていただきました。 いままで1時間以上かけていた作業が一瞬でおわり、感謝の一言に尽きます。このコードを転用させていただきます。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.6

#5です シート「M」「A」の解釈・扱いが逆でした。 考え方だけでも参考になれば

thosotani
質問者

お礼

ご親切にご教授ありがとうございました。 Range Cell のまとめなど大変勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.5

> If r.Value = var1 Then 変数の型とか大丈夫なんでしょうか 同じ値なのかどうか、VBA ではなく EXCEL さんにやってもらうとか 以下でどうなりますか Public Sub Samp1()   Dim ws As Worksheet   Dim iRow As Long   Dim rng As Range, r As Range   Const CCMOJI As String = "=IF(RC[+1]=A!R{%1}C1,1,"""")"   Set ws = Worksheets("A")   Worksheets("M").Select   Columns(1).Insert   With Range("A6:A216")     For iRow = 2 To ws.Range("A1").CurrentRegion.Rows.Count       .FormulaR1C1 = Replace(CCMOJI, "{%1}", iRow)       .Value = .Value       On Error Resume Next       Set rng = .SpecialCells(xlCellTypeConstants, xlNumbers)       If (Err = 0) Then         For Each r In rng           r.Offset(, 1).Font.Color = vbBlue           With r.Offset(, 10).Resize(, 3)             .Value = ws.Cells(iRow, 9).Resize(, 3).Value             .Font.Color = RGB(0, 112, 192)           End With         Next       End If     Next   End With   Columns(1).Delete   Set ws = Nothing End Sub シート「M」に作業用の列を1列目に入れて ・隣のものと、シート「A」の比較対象のものが同じなら 1 を 結果を即値にして、数値部分を抽出して・・・・ 数値のものがなかったらエラーになるので・・・・

thosotani
質問者

お礼

お礼が遅れた異変失礼いたしました。 サンプルプログラム大変参考になりました。 どうもありがとうございました。 細谷

全文を見る
すると、全ての回答が全文表示されます。
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

気が付いた点をモジュール内部に記入してみました。 〇第一の問題点は「Range("A6:A216")」で、これではsh1を調べています。sh2.Range("A6:A216") とします。 〇また、「r」はRangeですが、「sh2.Cells(r, "J") = var2」では、このセルの値を書き換えの行番号にしています。多分違うと思うので探した行を「rw」で定義しています。 差し出がましいですが、他に 〇書き換えで、CellsとRangeがあるので統一しました。 〇For~Next でNextの次の変数はない方がすっきりします。 〇「On Error Resume Next」だと、エラーが起きても正常に終わります。 〇For Loopの中で最終行を判定してメッセージを出していますが、ループの外がいいでしょう。このとき「行番号=末尾行+1」です。 〇For Loopの「Step1」は不要です。 Sub データ転記プログラムテスト()   '変数宣言   Dim sh1, sh2     Set sh1 = Worksheets("M")     Set sh2 = Worksheets("A")   Dim 先頭行 As Long   Dim 末尾行 As Long   Dim 行番号 As Long   Dim var1 As String, var2 As String, var3 As String, var4 As String   Dim r As Range      Dim rw As Long '// *** 追記 ***      sh1.Select   'データの一行目から1列目、3列目のデータを変数var1, var2に取り込む   先頭行 = 2   末尾行 = Range("A1").CurrentRegion.Rows.Count      For 行番号 = 先頭行 To 末尾行 Step 1  '// Step 1 は不要     var1 = sh1.Cells(行番号, 1)   '// 分かりやすくするために追記     var2 = sh1.Cells(行番号, 9)   '// 分かりやすくするために追記     var3 = sh1.Cells(行番号, 10)  '// 分かりやすくするために追記     var4 = sh1.Cells(行番号, 11)  '// 分かりやすくするために追記        'sh2.Select   '// sh2 を定義しているのだから無くていい     On Error Resume Next  '// エラーがあっても正常終了させる?          '---Sheet2で該当行を探す     For Each r In sh2.Range("A6:A216") '// sh2. 追記       If r.Value = var1 Then         rw = r.Row      '// 見つけた行         r.Font.Color = vbBlue         sh2.Range("J" & rw) = var2         sh2.Range("J" & rw).Font.Color = RGB(0, 112, 192)         sh2.Range("K" & rw) = var3         sh2.Range("K" & rw).Font.Color = RGB(0, 112, 192)         sh2.Range("L" & rw) = var4         sh2.Range("L" & rw).Font.Color = RGB(0, 112, 192)         'ActiveCell.Select         'Selection.Font.ColorIndex = 5       Else                    End If     Next   Next      MsgBox ("データ転記が終了しました") End Sub

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

こんばんは。 #1さんのいうトラブルが発生していることがあります。 (#2で既に出ているので、私は、あえてサンプルコードは書きません。) 標準モジュールで書いていたら、 ループの外で、sh1.Select をしているのですから、ループの中では、 var1 = Cells(行番号, 1) は、最初は、sh1だったのが、二度目からは、sh2になっていますね。 シートモジュールで書いたら、Range("A6:A216")は、sh2.Select にしても、sh1を参照しているはずです。 どちらにしても、標準モジュールで、sh1 , sh2 をはっきりさせて書かなくてはなりませんね。 次は、参考までに……。 > If r.Value = var1 という数式の内容で探し出そうとしています。 「検索キーとなるシート"A"内の契約番号」というのは、数字だけですか? それとも、アルファベットや空白が入っているのではないでしょうか? 以下の例は、A1 に、"a" といれ、B1に、"A " ←空白が入っている それでも、以下なら、同じだと出力されます。私は、こんなコードを使って文字列比較をします。 '// Sub Test1()  Dim Chr1 As String  Dim sVal As String  Chr1 = Trim(Range("A1").Value) '←ここがミソ1: Trim で空白を取る  sVal = Trim(Range("B1").Value)  If Chr1 <> "" And sVal <> "" Then   If StrComp(Chr1, sVal, vbTextCompare) = 0 Then '←ここがミソ2:TextCompareをする    MsgBox "Same", vbInformation   Else    MsgBox "Different", vbExclamation   End If  End If End Sub '//

thosotani
質問者

お礼

ご教示ありがとうございます。ご指摘のとおり検索キーは文字列と数字列の混合で、ご教示いただいた空白等を処理するルーチンは大変勉強になりました。どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! コードをざっと拝見して・・・ >var1 = Cells(行番号, 1) >var2 = Cells(行番号, 9) >var3 = Cells(行番号, 10) >var4 = Cells(行番号, 11) の行がSheetの指定がないので、アクティブSheetが対象になっていると思われます。 丁寧に >var1 = sh2.Cells(行番号, 1) >var2 = sh2.Cells(行番号, 9) >var3 = sh2.Cells(行番号, 10) >var4 = sh2.Cells(行番号, 11) のようにSheetを指定したらどうなりますか? 詳しく検証していませんので 他の原因ならごめんなさいね。m(_ _)m

thosotani
質問者

お礼

早速のご教示ありがとうございます。 ここの部分はvar1からvar4に変数が代入されているので うまく稼動しているようです。 うまく動いていないのはこれより下の部分なので 他にもし思い浮かぶご助言がありましたらよろしくお願いいたします。 ほそたに

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelマクロの大量行の処理速度を上げたい

    Excel VBA 勉強中です。 Excel VBA を利用して大量の行の処理をしたいのですが、時間がかかってしまい、場合によっては固まってしまうので困っています。 色々と調べながら自分で作ってみたのですが、少量の行で試しに行った時にはきちんと動いたのですが、大量の行で行った時には固まってしまう(動かなくなってしまう)ので困っています。 転記先(シート1)には番号とコードが入っていて、基データ(シート2)にある番号とコードが一致した場合のみ基シート(シート2)にある日付を転記先(シート1)へ転記させたいと思っています。 ・シート1にもシート2にもそれぞれ、データが10000行ぐらいあります。 シート1(転記先) D列   E列    I列 番号   コード   日付←転記させたいセル 12345   123    4/30 23456   234 34567   345 シート2(基データ) B列   G列    I列 番号   コード   日付 23456   123    3/31 12345   123    4/30 45678   345    5/1 Dim sh1, sh2 Set sh1 = Sheets("シート1")  ’転記先 Set sh2 = Sheets("シート2")  ’基データ d = sh1.Range("A65536").End(xlUp).Row On Error Resume Next For i = 2 To d r = 2 d1 = sh1.Cells(i, 4) & sh1.Cells(i, 5) d2 = sh2.Cells(r, 2) & sh2.Cells(r, 7) Do While d2 <> "" If d1 = d2 Then sh1.Cells(i, 9) = sh2.Cells(r, 9) Exit Do End If r = r + 1 d2 = sh2.Cells(r, 2) & sh2.Cells(r, 7) Loop Next i どこがいけないのか、教えていただけると大変助かります。

  • Excel VBA元データから別シートへ振り分け

    元データ(DB)をA列の値で振り分け 別シート(印刷)に転記していく方法について教えてください。 以下のコードで転記は行えましたが1つの値で1つのシートを作成になってしまいます。 どこをどのように変更すればA列の値(一種類に1つのシートにまとめたい)に 1つのシートに転記となるかご教示お願いします。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("DB") Set sh2 = Worksheets("印刷") d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d sh2.Cells(6, "B") = sh1.Cells(i, "A") sh2.Cells(10, "B") = sh1.Cells(i, "B") sh2.Cells(10, "C") = sh1.Cells(i, "C") sh2.Cells(10, "D") = sh1.Cells(i, "D") sh2.Cells(10, "E") = sh1.Cells(i, "E") sh2.Cells(10, "F") = sh1.Cells(i, "F") sh2.Cells(10, "G") = sh1.Cells(i, "G") sh2.Cells(10, "H") = sh1.Cells(i, "H") sh2.Cells(10, "J") = sh1.Cells(i, "I") 'sh2.Range("a1:J34").PrintOut Next i End Sub よろしくお願いいたします。

  • VBAで、配列のデータをセルに書き戻す方法について

    1000行200列の配列があり、配列の5列目と6列目のデータを、セルの10列目と11列目にすばやく書き戻す方法を教えてください。 (方法1) Dim DATA() As Long ReDim DATA(1 To 1000, 1 To 200) FOR 行番号= 1 TO 1000 CELLS(行番号,10).VALUE = DATA(行番号,5) CELLS(行番号,11).VALUE = DATA(行番号,6) NEXT (方法2) Dim DATA() As Long ReDim DATA(1 To 1000, 1 To 200) Dim WORK1() As Long ReDim WORK1(1 To 1000, 1 To 1) Dim WORK2() As Long ReDim WORK2(1 To 1000, 1 To 1) FOR 行番号= 1 TO 1000 WORK1(行番号,1) = DATA(行番号,5) WORK2(行番号,1) = DATA(行番号,6) NEXT RANGE("J1:J1000").VALUE = WORK1() RANGE("K1:K1000").VALUE = WORK2() (方法1)より(方法2)の方が早いのですが、WORKに貯めるのもめんどうなので、 RANGE("J1:K1000").VALUE = DATA(1,5), DATA(2,5), DATA(3,5),~,DATA(999,6),DATA(1000,6)のようなことができればと思います。 よろしくお願いします。

  • VBAについて

    はじめまして、以下のVBAについて質問させてください。 A列にデータの個数だけ連番を振りたくて、以下のVBAを入力しました。 連番を振るシートは複数あり、そのシートによってデータの個数は異なります。 しかし、以下のVBAだと最初のシートの個数に応じて、後のシートの連番も振られてしまいます。データの個数に応じてシートごとに連番を振るには、どうすればよいのでしょうか…?!どうか迷える子羊をお助け下さい(T_T) '一番はじめのシートを選択 Sheet "一番".Select 'A列に連番を振る Dim sh As Variant For sh = 3 To Worksheets.Count Dim number As Integer Dim 行2 As Long number = 1 '2行目~最終行までループ For 行2 = 3 To Cells(Rows.Count, 2).End(xlUp).Row Worksheets(sh).Cells(行2, 1) = number number = number + 1 Next 行2 Next sh

  • Excel VBAについて

    Excel VBAについて教えて頂きたいのですが、 Sub test() Dim lastrow, r, i As Long Dim sh1, sh2 As String Dim ws As Worksheet lastrow = Cells(Rows.count, "D").End(xlUp).row For r = 7 To lastrow '7 For i = 1 To lastrow '4 sh1 = ActiveSheet.Cells(r, 4) ActiveSheet.Cells(r, 20) = _ Application.CountIfs(Sheets(sh1).Range("D:D"), Range("H3") & Range("I3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("D:D"), Range("H3") & Range("I3")) ActiveSheet.Cells(r, 21) = _ Application.CountIfs(Sheets(sh1).Range("C:C"), Range("F3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("C:C"), Range("F3")) ActiveSheet.Cells(r, 22) = _ Application.CountIfs(Sheets(sh1).Range("E:E"), Range("K3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("E:E"), Range("K3")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") ActiveSheet.Cells(r, 15) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") - 200 ActiveSheet.Cells(r, 18) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") + 200 ActiveSheet.Cells(r, 19) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) For Each ws In Worksheets ws.AutoFilterMode = False Next Next Next End Sub このコードは ActiveSheetで実行すると D列の7行目から最終行までに入力されている名前のシート(名前=シートがあります) その、シートの参照先で C,D,E列がcountif関数を利用して O列がSubtotal関数を利用しています。 このコードでもやりやいことは実行できるのですが、 時間がかかりすぎてしまいます。 約20件あり約2分ほどかかります。パソコンによっては倍ほど時間がかかるかもです。 そこでなのですが、 もっと処理のスピードを上げたいのですが、 可能でしょうか? 可能ならそのやり方をご教示ください。 よろしくお願い致します。

  • VBA 新データ行のみ元のデータシートにコピーする

    OSは、XP Excelは、2003 を使用しています。 シート1には元のデータ、シート2には追加データと元データが混じってあります。 元データシートに、追加データシートから追加データ行のみをコピペしたく、 マクロを組んでいます。 下記、 C列の売上番号を見比べて、C列のみ追記するまでは出来たのですが、 1行にデータはA列~X列まであるので、そのデータも一緒にコピペするには どの様にすれば良いのか教えて下さい。 よろしくお願いします。 ****************** Sub 追加データ追記マクロ() Dim motows As Worksheet '元データシート名を格納 Dim tsuikaws As Worksheet '追加データシート名を格納 Dim tsuikamax As Long '追加データの最終行 Dim motomax As Long '元データの最終行 Dim tsuikaNum As Range '追加売上番号 Dim motoNum As Variant '元売上番号 Dim i As Long     '書き込み行 Set motows = Worksheets(1).Name '元シート名を格納 Set tsuikaws = Worksheets(2).Name    '追加シート名を格納 tsuikamax = tsuikaws.Cells(Rows.Count, 1).End(xlUp).Row  '追加データの最終行を格納 motomax = motows.Cells(Rows.Count, 1).End(xlUp).Row '元データの最終行を格納 i = motomax + 1       '書き込み行は元データ最終行+1 For Each tsuikaNum In tsuikaws.Range("C1:C" & tsuikamax)        '追加データ売上番号格納 Set motoNum = motows.Range("C:C").Find(tsuikaNum, lookat:=xlWhole) '元データ売上番号格納 If motoNum Is Nothing Then '元データになかったら With motows .Cells(i, 3) = tsuikaNum i = i + 1 End With End If Next tsuikaNum End Sub

  • 【VBA】Ifで他シートから検索しコピーする

    Excel vbaについて教えてください。 自分で作成したコードが、うまく動かず悩んでいます。 ●作りたいもの Sheet3のA列にある数字を検索値とし、 Sheet1のA列を検索し、合致する行のB列~最終列までコピーし、 Sheet3のB列から貼付する。 ※Sheet1にある列数(項目数)は不定です ●作成したマクロ Sub test() Dim sh1 As WorkSheet Dim sh2 As WorkSheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet3") d = sh2.Range("A1").End(xlDown).Row 'Sheet3検索値のA列のデータの最終行 g = sh1.Range("B1").End(xlToRight).Column 'Sheet1の最終列 k = 2 For i = 2 To d    'Sheet3最終行まで If sh1.Cells( i & "A") = sh2.Cells( 1,"A") Then '条件)Sheet1とSheet3のA列が合致 For j = 2 To g                      'Sheet1の最終列まで sh2.Cells( k , j ) = sh1.Cells( i , j ) 'Sheet1のB行から最終列をコピーしSheet3へ貼付 Next j End If Next End Sub いろいろ直していたのですが、Set sh2 = Worksheets("Sheet3")で「インデックスが有効範囲にありません」(同じブック内に同名シートがあるのに?)とエラーが出たり、 また、B行から最終列までコピーする際の範囲指定についてもよくわからず、 もっと他に良い方法が無いものかとお手上げ状態です。 どうぞ宜しくお願いいたします。

  • エクセルVBA抽出がうまく出来ません

    エクセル2013VBA初心者です。 入力シートからDBシートへ、DBシートから印刷シートへのデータ転記と印刷、入力内容のクリアまでは出来るようになりました。 DBシートの検索を行い、記録内容を入力シートに転記する抽出を行いたいのですが、下記構文を書いたところで問題が発生しました。 If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then  でとまります。メッセージは ‘Range’メソッドは失敗しました:‘Workshieet’オブジェクトというものです。 やろうとしていることは、入力シートに設けた“E12”と”G12”の二つの検索項目をキーにDBシートの行を特定し、この行の内容を入力シートに反映しようということです。 入力シートの検索項目“E12”、 ”G12”はそれぞれDBシートのA列、B列に格納されている項目で、年度と連番です。サンプルとして入力シート"C5"に抽出しようとしているDBシートD列は申請者名です。 恐れ入りますがよろしくご教示頂きたく、お願い申し上げます。 Sub DBシートから力情報を抽出する () Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim i As Long Dim j As Long Dim k As Long Set Sh1 = Worksheets("入力") Set Sh2 = Worksheets("DB") j = Sh1.Range("E12").Value k = Sh1.Range("G12").Value With Sh2 For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then Sh1.Range("C5").Value = Sh2.Range("D & i").Value End If Next  End With End Sub

  • Excek VBA 上へ詰めてコピー

    VBAの勉強を始めたのですが、単純コピーはわかるようになったものの、空行の上詰めしながらのコピーでつまづいているので教えてください。 またセル範囲について、RangeとCellsの使い分けでもつまづいています。 画像の"Sheet1"のようなデータがあります。データの始まりはセル"A1"から始まっていますが、末尾(最終行)はデータのより様々で、最終行が決まっていません(n行)。 このデータを任意のシート(例では"Sheet2")の左上からコピーしたいのですが、その際に元の"Sheet1"のA列にエラー行が入ることがあります。エラー行は次の2種類です。 1. "error"など特定の文字(数字ではないもの)が入っている行 2. 空行(A列だけで判断) これらのデータ行は、行そのものをSheet2にはコピーせず、上へ詰めて正常行をペーストしていきたいのです。 Dim i As Integer For i の書き方 WorksheetsとCells(またはRange) エラー行のスキップの仕方 などがわかりません。 元(Sheet1)のデータは概ね体裁が決まっており、データの例外(エラー)は上の1. 2以外は考えずに、シンプルな書き方を望んでいますが、どのように記載したらよいでしょうか。

  • Excel VBAで文字列の部分一致の文字列を表示

    以前、こちらで頭5文字までの一致で文字列を表示するVBAを教えて頂きました。今回はFINDなどの部分一致での文字列を表示することをしたいのですが、ご教示いただけますと幸いです。 下記はSheet1のA3に文字を5文字以内いれるとSheet2のC列からピックアップしてSheet1のA列に文字列を表示する及びSheet2のB列のデータをSheet1のC列に表示させるVBAです。 Sub Test2() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim SData As String, i As Long, VRet As Variant Dim c As Range, LastRow As Long Set Ws1 = Sheets("Sheet1") Set Ws2 = Sheets("Sheet2") SData = CStr(Ws1.Range("A3").Value) If SData = "" Then Exit Sub i = 5 LastRow = Ws1.Cells(Rows.Count, "A").End(xlUp).Row If LastRow < i Then LastRow = i End If Ws1.Range(Ws1.Cells(i, "A"), Ws1.Cells(LastRow, "C")).ClearContents With Ws2 For Each c In .Range(.Cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp)) VRet = InStr(1, CStr(c.Value), SData, vbTextCompare) If VRet = 1 And Len(c.Value) >= 10 Then Ws1.Cells(i, "A").Resize(1, 2).Value = c.Resize(1, 2).Value 'とりあえずSheet2のB列のデータ(C列のデータに同期したデータ)をSheet1のC列に Ws1.Cells(i, "C").Value = .Cells(c.Row, "B").Value i = i + 1 End If Next End With End Sub 宜しくお願い致します。

このQ&Aのポイント
  • マイクロソフトエッジが開かない原因や解決方法を教えてください。
  • マイクロソフトエッジの起動方法や設定変更方法について教えてください。
  • NEC 121wareのWindowsに関する質問です。マイクロソフトエッジの開き方がわかりません。
回答を見る

専門家に質問してみよう