- ベストアンサー
エクセルで異なるシートのデータを比較したり、コピーしたりしたい
- エクセルで異なるシートのデータを比較し、追加や上書きなどの操作をする方法を教えてください。
- エクセル初心者が異なるシートのデータを比較し、追加や上書きなどの操作をする方法についてアドバイスをお願いします。
- エクセルのシート間でデータを比較し、効率的に追加や上書きなどの操作を行う方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBAでの処理で良ければ、次の手順でテストしてみてください。 > シートAのデータを一旦消去し、CSVファイルを読み込む。 読み込みましたら、セルA1を Wクリックするだけで、ご希望どおり処理されます。 > 既存のデータとシートAのデータを比較する。 比較するのは、 キーになっている「項目番号」だけでいいのですね。 [操作手順] ・CSV読み込みシート(シートA)のシート名タブを右クリックして「コードの表示」を 指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 必要により、コードの2~3行目を実情に合わせ変更します。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 ・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」にして[OK]します。 ・以上で設定完了です。 これで、A1をWクリックすると、指定したシートのキー列に同じデータがあれば、 その行を上書きし、無かったら、一番下にデータを追加します。 これで如何でしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RuikeiShN = "シートB" ' <--- 累積データ シート名指定 Const Col = "A" ' <----------- キー列指定 Const TopRow = 2 ' <-------------- データ先頭行指定(見出しを除く) Dim Rng As Range Dim R As Range Dim Res As Integer If Target.Address <> "$A$1" Then Exit Sub Cancel = True Res = MsgBox(RuikeiShN & " の累積データを更新しますか?", vbYesNo + vbExclamation) If Res = vbNo Then Exit Sub For Each Rng In Range(Col & TopRow, Range(Col & 65536).End(xlUp)) Rng.EntireRow.Copy With Worksheets(RuikeiShN) Set R = .Range(Col & ":" & Col).Find(Rng.Value, lookat:=xlWhole) If R Is Nothing Then .Paste Destination:=.Range(Col & 65536).End(xlUp).Offset(1).EntireRow Else .Paste Destination:=R.EntireRow End If End With Next Rng Application.CutCopyMode = False Set R = Nothing End Sub
その他の回答 (2)
- whitepepper
- ベストアンサー率27% (683/2442)
》(2)の方法が分りません。 これはデータベースソフトのならではの仕事です。Excelでやろうとすると、極めて厄介です。すなわち、Accessや桐を使えば極めて簡単です。 》ちなみに、別のデータベースを使うとかは不可です。 》エクセルでやらないといけない仕様なのです。 私なら、桐で処理してその結果をExcelに書き出します。そして、余った時間をのんびりします。
補足
ありがとうございます。 ところで、桐の使い方や、インストールの方法など、簡単でいいので教えてもらえませんか?
- tds2a
- ベストアンサー率16% (151/922)
Windowsにはエクセルのようなものを複数を起動する機能があります。 AとBを画面に並べての操作もできます。 両者間の移動も複写も可能です。 操作方法は複数の起動とツールバーのウェンドウの機能の組み合わせで使うことです。
お礼
お答え頂きまして、ありがとうございました。 しかし、自分の力不足の為、tds2aさんのイメージしている事がよく分りません...
お礼
凄い! 完璧です!! しかも速い!!! 教えて頂いて、直ぐに出来たのですが、どうしてこんなに簡単に出来るのか理解しようとして時間がかかってしまいました。 すみません... 本当にどうもありがとうございました。