• ベストアンサー

エクセルでの比較データコピー

エクセル2010でマクロを組んでデータ処理を簡単に行いたいのですが、 よくわからないので、教えてください! シート2のC列とシート1のD列を比較し、同じ文字列があった場合に シート2のE列をシート1のF列にコピーする。 ただし、シート2のE列に〇が入っている場合は、シート2のG列をシート1のF列にコピーする。 どなたかご教示いただけませんか? よろしくお願いします!

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

No3です。 >シート2の検索文字列がシート1の検索文字列と一致した場合で、 >シート2のE列に〇があった場合に、〇をコピーするのではなく、 >シート2のG列をシート1のF列へコピーするのは こちらでは問題なく処理されていますが 'シート2のC列の文字とシート1のD列の文字が一致した場合 If Not IsError(myR) Then   'C列の二つ右隣(E列)の値が〇の時   If c.Offset(, 2).Value = "〇" Then     'シート1のF列にシート2のC列のに四つ右隣(G列)の値をコピー     .Cells(myR, "F").Value = c.Offset(, 4).Value   Else     .Cells(myR, "F").Value = c.Offset(, 2).Value   End If End If >シート2のE列に〇が 〇 が正しく記載されていないのでは (セルに書かれている"〇"とコードの"〇"を確認してください。) 〇 ○ 0 o O

higedebuhot
質問者

お礼

早々に回答ありがとうございます! うまくいきました! 本当に助かりました。情報の少ない中、的確にご回答頂きまして ありがとうございました!

higedebuhot
質問者

補足

早々に回答ありがとうございます! うまくいきました! 本当に助かりました。情報の少ない中、的確にご回答頂きまして ありがとうございました!

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

参考に Sub Test()   Dim c As Range, myR As Variant   With Worksheets("Sheet1")     For Each c In Worksheets("Sheet2").Columns(3).SpecialCells(2)       myR = Application.Match(c.Value, .Columns(4), 0)       If Not IsError(myR) Then         If c.Offset(, 2).Value = "〇" Then           .Cells(myR, "F").Value = c.Offset(, 4).Value         Else           .Cells(myR, "F").Value = c.Offset(, 2).Value         End If       End If     Next   End With End Sub

higedebuhot
質問者

補足

ご回答ありがとうございます。 情報不足にも関わらず、ここまで作って頂いて・・・。 シート2の検索文字列がシート1の検索文字列と一致した場合で、 シート2のE列に〇があった場合に、〇をコピーするのではなく、 シート2のG列をシート1のF列へコピーするのは If Not IsError(myR) Then以下になりますか? ○がコピーされてしまい、どこを触れば良いか 教えて頂けますと助かります。 よろしくお願いします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 御質問文の説明内容だけでは情報不足なため、どの様な処理を行いたいのかが判りません。 >シート2のC列とシート1のD列を比較し、同じ文字列があった場合にシート2のE列をシート1のF列にコピーする。 >ただし、シート2のE列に〇が入っている場合は、シート2のG列をシート1のF列にコピーする。 との事ですが、その文字列のデータは、シート1のD列の何行目から入力されているものなのでしょうか?  もし、1行目から処理を開始してしまう様にしてしまいますと、シート2のE列の一番上に入力されていた項目名が、シート1のF列の項目名の所にコピーされてしまいます。  それに、シート1のD列の中に、シート2のC列には存在していない文字列が入力されていて、尚且つ、シート1のF列やG列には既に何らかのデータが入力済みとなっていた場合にはどうすれば良いのでしょうか?  元々入力されていたデータをそのまま残さなければならないのでしょうか?  それとも、シート1のその行のF列とG列のセルのデータは消去した方が良いのでしょうか?  又、シート1のD列に入力されている文字列と同じ文字列が、シート2のC列に存在していて、尚且つ、シート2のE列に〇が入っている場合には、シート1のその行のF列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか?  又、シート1のD列に入力されている文字列と同じ文字列が、シート2のC列に存在していて、尚且つ、シート2のE列に〇が入っていない場合には、シート1のその行のG列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか?  又、シート1のD列が空欄となっていた場合には、シート1のその行のF列とG列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか?

higedebuhot
質問者

補足

コメントありがとうございます。下記回答致します。 情報不足ですみません。。。よろしくお願いします。 ●との事ですが、その文字列のデータは、シート1のD列の何行目から入力されているものなのでしょうか? もし、1行目から処理を開始してしまう様にしてしまいますと、シート2のE列の一番上に入力されていた項目名が、シート1のF列の項目名の所にコピーされてしまいます。 →両シート共に2行目からデータが入っています。 1行目はそれぞれのデータのタイトルが入っています。 ●それに、シート1のD列の中に、シート2のC列には存在していない文字列が入力されていて、尚且つ、シート1のF列やG列には既に何らかのデータが入力済みとなっていた場合にはどうすれば良いのでしょうか? 元々入力されていたデータをそのまま残さなければならないのでしょうか? それとも、シート1のその行のF列とG列のセルのデータは消去した方が良いのでしょうか? →上書きで処理できればと思っています(消えても問題ないということです)。 基本的には同じデータは1度しかでてこないと仮定してのことになります。 ●又、シート1のD列に入力されている文字列と同じ文字列が、シート2のC列に存在していて、尚且つ、シート2のE列に〇が入っている場合には、シート1のその行のF列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか? 又、シート1のD列に入力されている文字列と同じ文字列が、シート2のC列に存在していて、尚且つ、シート2のE列に〇が入っていない場合には、シート1のその行のG列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか? →シート1のF列は空欄になっている状態です。今回シート1のG列に データは入力しません。 ●又、シート1のD列が空欄となっていた場合には、シート1のその行のF列とG列のデータはそのまま残しておいた方が良いのでしょうか、それとも消去した方が良いのでしょうか? →シート1のD列は空欄はありません。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

同じ文字列って?セルの内容(文字列)が同じという意味?それともセルの内容の一部の文字列が一致したらという意味? そもそも何が良くわからないのでしょうか? 検索がわからない? 比較がわからない? コピーがわからない? そもそもマクロを知らない?としたら話にならない(笑) 仕様を示すのでマクロを無料で作成してくださいという話だとしたら、仕様が適当過ぎてこれもお話にならない(笑) まともな仕様を書けば誰かが気まぐれで作ってくれるかも(笑) か、とても親切な人が現れて、いちいち細かく打ち合わせしてお望みのものを作ってくれる、もしくは、たまたまテレパシーが伝わってお望みのコードができあがる。 かも(笑)

higedebuhot
質問者

補足

不十分な内容ですみません・・・。

関連するQ&A