- ベストアンサー
他シートのセルを比較する方法
題名記載の詳細を以下に記します (状態) シート1 →比較対象 シート2 →セルに記載した内容はシート1と比較して列行がバラバラ (困っている点) 上記状態の2つのシートを、マクロで比較させて、条件が不一致のセルの色(何色でも)を変化させようと考えています ただ、どうもうまくいかず有識者の知識をお借りしたいと思い投稿しました 直接コードを記述頂ければ助かりますが、類似のサイトがあれば自主的に学習しますので、アドバイスを頂ければ幸いです 因みに、私のVBA知識はほぼ初心者です
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- Excelマクロでセルの比較
Excelマクロでセルの比較 まだマクロ初心者なので、詳しいことがわからなくて困っております。 例)●前提として何行目まであるかは変化します (A列)(B列) (1行目) 35 35 (2行目) 26 26 (3行目) 13 13 (n行目) 12 12 ※n=最終行 【やりたいこと】 このようにシートに入力されていたとして、 「A1=B1?」⇒「A2=B2?」⇒「A3=B3?」⇒「An=Bn?」と比較を進めていき不一致の有無を出す。 もし不一致がなければ、そのまま通過しその次のマクロを実行していく。 不一致があった場合には、不一致の行を別ファイルに出力してファイル保存し、ファイルを閉じる。 マクロを実行している元のファイルは、保存せずにファイルを閉じる) 行の長さが変化するため、その変化にも対応した処理を実行したいと思っております。 本やサイトで調べてみたのですが、基礎知識がないためうまく処理をさせるマクロを作ることが出来ませんでした。 このようなマクロが可能なのかもわかりませんが、出来ましたらこのマクロを教えていただけますでしょうか。 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル
二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を 別のシートに設定するには、どうしたらいいでしょうか? [シート1] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? 02|A2 yyy 03|B1 ??? 04|C1 sss [シート2] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 aaa 02|A3 bbb 03|B0 xxx 04|B1 ccc 05|C1 sss シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、 シート2の [B] の値を シート1の[C]に設定するための関数はどのようにしたら良いでしょうか? 最終的に、シート1が --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? aaa 02|A2 yyy 03|B1 ??? ccc 04|C1 sss sss となります。 Excelの関数あマクロは、どうしても分からなく質問させてもらいました。 申し訳ありませんが、ご教授宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 別シート同士のセルを比較して一致したらセルに代入をしたいと考えています
別シート同士のセルを比較して一致したらセルに代入をしたいと考えています。 excelのVBAを使って行いたいのです book1のsheet1に A列 B列 C列 D列 2000 NEC VL100 5000 Sony vaio-200 3000 東芝 letsnote 単価、メーカー、型番、空き列があり 200行くらいです。 book2のsheet1に 同じく、単価、メーカー、型番がありますが 単価がsheet1とは異なり、違うメーカー型番の情報が 4000行くらいあります A列 B列 C列 5225 XXXX XXXX 2200 NEC VL100 5200 Sony vaio-200 2684 XXXX XXXX 2566 XXXX XXXX 6000 東芝 letsnote ・・・・・・ ・・・・・・ そこで book1のB,C列のメーカーと型番が一致するものを book2のsheet1のB,C列から探し 一致したら、book1のsheet1のD列に book2 sheet1のA列の値を入れのです。 参考になるスクリプトを教えて頂けると大変助かります、 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセル セルの比較
セルの比較について教えてください。 A1~A10と、B1~B10に文字が入っています。 Aがりんごのときは、Bは果物、 Aがキャベツのときは、Bは野菜 となっていなければなりません AとBの同じ行のセルの内容が、この条件と一致しないものが、1行から10行までひとつでもあった場合に、C1に『一致していない箇所があります』と出るようにしたいです。 マクロは使わないでお願いします。
- ベストアンサー
- オフィス系ソフト
- 全シート内の差分比較とそのセル色塗りつぶしマクロ
Excelファイルデータの差分比較とそのセル塗りつぶしのマクロを作成したいのですが、今の自分には、下記のマクロでとどまっており、 マクロを実行するファイル内シートにデータをコピーしたり、 マクロ内でその都度、シート名の記載の変更、差分比較データ範囲の変更が必要になり、大変不便で困っております。 やりたい事は、マクロでユーザがExcelのファイルを選択出来て、 そのファイルの中の全シートのデータについて、差分比較とそのそのセルの塗りつぶしをして、塗りつぶしをファイルへ反映させて保存させることです。 どうか、お分かりの方がいらっしゃいましたら、ご教示をお願い出来ますと大変助かります。 各シート内のデータは、列、行共にほぼ同じフォーマットで値が入っています。 それらのシート内のデータで修正した箇所を見つける為、差分比較がしたいです。 例えば、シートが3つの場合は、 1つ目のシートは修正前のデータ、 2つ目のシート内は1つ目のシートの値を部分的に修正したものです。 3つ目のシート内のデータも、1つ目のデータの値を更に再修正したものです。 この3つのシート内のデータを差分比較したいです。 シートの数は、選択したファイルによって異なります。 Sub TEST1() Dim s1, s2 As Worksheet 'Worksheetsオブジェクト用 Set s1 = Worksheets("修正前S装置検索システム") '比較元シート名 Set s2 = Worksheets("修正後装置検索システム") '比較先シート名 Dim arr1 As Variant, arr2 As Variant arr1 = s1.Range("$A$2:$W$548").Value arr2 = s2.Range("$A$2:$W$548").Value For i = 1 To UBound(arr1, 1) For j = 1 To UBound(arr1, 2) If arr1(i, j) <> arr2(i, j) Then '塗りつぶし処理 s1.Cells(i + 1, j).Interior.Color = RGB(255, 0, 0) s2.Cells(i + 1, j).Interior.Color = RGB(102, 255, 51) End If Next Next End Sub
- ベストアンサー
- Visual Basic
- シートのコピー、セル全体のコピーで列幅が変わる
VBAから新しいブックへのシートコピー、セル全体のコピーをすると 列幅が変化し、印刷プレビューで確認してもコピー元とは異なっています。 列幅をみるとコピー元が15、コピー先が11になっていますが、ピクセルは両方とも 90となっていました。 VBAを使わず手動で試したところ、コピー元と同じ列幅でシートコピー、セル全体のコピーが できました。 VBAでは、コピー元とコピー先の列幅を一致させることはできないのでしょうか? なお、バージョンはExcel2003で、使用したメソッドはマクロ記録したものです。
- 締切済み
- オフィス系ソフト
- エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい
エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- セルの比較
初投稿させていただきます。宜しくお願い致します。 office系のソフトは初心者で何とかならないものかと悩んでます。 excelで特定のセルのデータと行全体を比較して、一致する文字列を含んだセルを返してほしいのです。 それを各セルごとに行い、まとめて別のシートに出力させることは可能でしょうか? たとえば A B C 1 あい い う 2 いか う えい 3 うみ え お 4 えい お か 5 うさ か き があって Cの各セルとA行全体を比較して結果を別に出力 ・・・ D 1 A3,A5 2 A4 3 4 5 ない場合は空白でも×でもいいのですが こんな感じにできないでしょうか。 実際のデータはファイルが別になっていてファイルAのC行とファイルBのB行のセル(200個くらい)との比較といった感じです。 いろいろ調べては見たのですが、うまくいかず・・・ 欲張った内容かも知れません。 すみませんがどなたかいい方法を教えて頂けませんか。
- ベストアンサー
- オフィス系ソフト
- 比較して一致したら指定セルに貼り付け処理
【Sheet1】の日付A1セルと【Sheet2】の日付A行を比較。 ※ 【Sheet1】の比較元はA1だけでいい 一致しなければ【Sheet2】のA行を一つ下げ、比較し直し、一致するまで比較 一致したら【Sheet1】のA列以降を全てコピーし【Sheet2】の一致した日付の隣B列に以下の様に貼り付けする 【Sheet1】 【Sheet2】 A B C A 1 2008/1/2 0:45 72 99 1 2008/1/2 0:00 2 2008/1/2 1:00 76 84 2 2008/1/2 0:15 3 2008/1/2 1:15 19 45 3 2008/1/2 0:30 4 2008/1/2 1:30 30 78 4 2008/1/2 0:45 5 2008/1/2 1:45 56 33 5 2008/1/2 1:00 ↓『結果』 【Sheet2】 A B 1 2008/1/2 0:00 2 2008/1/2 0:15 3 2008/1/2 0:30 4 2008/1/2 0:45 2008/1/2 0:45 72 99 5 2008/1/2 1:00 2008/1/2 1:00 76 84 6 2008/1/2 1:15 2008/1/2 1:15 19 45 7 2008/1/2 1:30 2008/1/2 1:30 30 78 8 2008/1/2 1:45 2008/1/2 1:45 56 33 -------------------------------------------------------------------------- Dim i As Integer Dim Com As Integer Dim s As Integer SheetName = "Sheet1" SheetName2 = "Sheet2" Do For Com = 1 To 20 ' Sheet1のA1とSheet2のA行セルが一致するまで比較 If StrComp(Worksheets(SheetName).Cells(1, 1), Worksheets(SheetName2).Cells(Com, 1), vbTextCompare) Then ' 一致したらA列をコピー Rows("1:1").Select Selection.Copy Else ' 一致しなければSheet2のAセルを一つ下げる WorkSheets(SheetName2).Cells(Com, 1).Offset(1, 0).Select End If Next ' 一致するまで比較 Loop Until StrComp(Cells(1, 1), Cells(s, 10)) -------------------------------------------------------------------------- Loop Untilの箇所で記述がおかしいせいかアプリケーション定義、またはオブジェクトエラーになってしまいます。 一致した時、Sheet1のA1列の情報をSheet2の指定箇所に格納する記述の仕方がどうしてもわかりません。 何かいい記述はないでしょうか? 質問が長くなってしまいましたが、どうか教えていただきたく思います。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAでマクロを走らせた日時をSheet2のAセルに入力する
VBAでマクロを走らせた日時をSheet2のAセルに入力する はじめまして。 現在、ファイルを整理するマクロを使っています。 そのマクロを使った履歴を残す意味で、 いつマクロを走らせたかすぐにわかるように、 Sheet2のAのセル(2行目から)に走らせた日時を示したいと思っています。 マクロでの処理が終わったら、 毎回Sheet2に日時が入力されるようにするには、 どんな命令文を追記したらよいのでしょうか。 マクロに関しては知識がなく、 インターネットで調べて、 Sheets("Sheet2").Cells(R, "A").Value = Now というのを追記してみたのですが、 Sheet2に入力はされるものの、 Aセルの行がとびとびに入力されたり、 整理したファイルの数だけ(複数)入力されてしまいます。 マクロを1回走らせたら1つの日時が入力されるようにしたいです。 Sub ()とEnd Subの間にFor RとNext Rがあり、 作業が繰り返されているようです。 転記ができないため、マクロを示すことができません。 さすがに、これだけの情報では難しいでしょうか。 わかるかたがいらっしゃいましたら、 よろしくおねがいします。
- ベストアンサー
- Visual Basic
お礼
ありがとうございます 今回のケースはこのマクロで補完出来そうです ただ、1点ご教授願いたいのですがですが… 1 For each文を調べたのですがイマイチ理解出来ず、具体的な動作のイメージ(どのように比較対象を検索させているのか)を教えていただけませんか?