2012-03-06 08:47:35 +0000 2012-03-06 08:47:35 +0000
44
44

Excelのワークシートをコピーして、数式の相対セル参照を維持する

Excelのもう一つのコピー問題:

どのようにしたら、コピーしたワークシートがWorkbookA.xlsxを参照することなく、WorkbookA.xlsxからWorkbookB.xlsxにワークシートをコピーすることができますか?

私は「絶対」セル参照の代わりに「相対」セル参照を維持したいのですが(この用語がまだ存在しない場合は、Excelの世界で発明しなければなりません)。

私がそれを動作させることができないもう一つの可能な代替案は、セル「値」のみを貼り付けるオプションです。エクセルは「値」をセル内の実際の数式ではなく、計算された値として扱います。私は数式を貼り付けるを選択した場合、それはまだ絶対参照を与えます。

なぜ私はこれを必要とするのかについての詳細:私は毎日の操作のために使用されているプロダクションのxlsxを持っています。我々は常にこのxlsxに “アップグレード "を行う必要がありますので、一人の人がコピーを作成し、単一のシートのためにそこに彼の変更を行うことができます。同時に、別の人が別のシートに変更を加えることもあります。サマリーレポートのように、これらのシートには他のシートに依存するセルがないため、シートをコピーして元のxlsxにマージすることが望ましいです。しかし、「絶対参照」は多くの問題を与えています。

回答 (17)

26
26
26
2012-11-29 19:39:45 +0000

私は、多くの場合、次のことを行うために、それが簡単に見つかりました:

  • 新しいワークブックにシートをコピーする
  • 新しいワークブックで新しいシートをアクティブにする
  • すべてを選択します (Ctrl+A)
  • find/replace on
  • find: [WorkbookA.xlsx]!
  • replace. <leave
  • replace all
22
22
22
2012-05-02 14:44:00 +0000

Ctrl + ~で数式を表示してみてください。そして、Ctrl + Aですべてを選択し、コピーしてからメモ帳に貼り付けます。

最後に、メモ帳からコピーして、他のワークブックに貼り付けます。

12
12
12
2013-11-26 22:20:16 +0000

この答えのすぐ下の符号なしの答えが、私の場合にはうまくいった答えですが、若干のバリエーションがあります。移動先のスプレッドシートを作成して保存する

  1. 移動」や「コピー」を使ったり、新しいスプレッドシートに数式を入れたページをドラッグしたりします。これにより、新しいページの数式は古いワークシートを指したままになります。次に、新しいスプレッドシートを古いワークシートと同じ場所に保存します。次に、[データ] タブに移動し、[リンクの編集] をクリックします。このオプションは、ページ内にリンクがないと有効になりません。

4.表示されるダイアログで、ソースファイルの名前を選択し、"ソースの変更 “をクリックします。

5.次に表示されるオープンファイルダイアログで、新しいスプレッドシートの名前を選択します。

9
9
9
2014-01-17 17:07:23 +0000
=database_feed!A1

に変換すると、ワークシート間でコピーしても参照シートの変更はありません。

=INDIRECT("database_feed!A1")
=INDIRECT("'"&B1&"'!A1")

に変換して、セルB1に参照シートの名前を入力します。これで、新しいスプレッドシートにコピーしたときに更新するセルは1つだけになりました。

3
3
3
2012-03-07 15:06:38 +0000

以下のコードは、あなたのニーズに合わせることができます。これは、wb1のシートからすべての数式を取り出し、新しいワークブックのシートに適用します。式は Strings として適用されるので、元のワークブックへの参照が挿入されることはありません。また、このコードはクリップボードを使用せず、セルをループする必要がないので、超高速です。

3
3
3
2016-03-15 21:31:57 +0000

99%の回答は元の質問にすら対応していなかったので、ここに適切な回答を記載します。元のファイル(Original.xlsx)から新しいExcelファイル(New.xlsx)に通常通りシートをコピーします。一般的に、私は名前を右クリックして「移動またはコピー」を選択します…

  1. 2つ目の保存 - 新しく作成したファイル(New.xlsx)を保存します。新しいファイルでは、データの下にある “リンクの編集 "をクリックします。 ポップアップで "ソースの変更 "を選択します。

5.ファイル(New.xlsx)を探して "開く "をクリックします。

オリジナル(Original.xlsx)へのすべての参照が削除されます。

2
2
2
2013-10-04 11:52:22 +0000
  • ワークシートを'WorkbookB.xlsx'にコピー
  • 新しいファイルでワークシートを開く
  • すべてを選択
  • メニューのデータに移動し、リンクの編集をクリック
  • 古いファイルへのリンクが現在開いているファイルへのリンクになるようにリンクを編集

これは私のために動作します。

0
0
0
2018-09-10 16:09:13 +0000

VBAプログラムでシートを引っ張ってきているので自動でやる必要がある場合。これを使用してください:

Public Sub ChangeSource()
'
' ChangeSource Macro
' Edit the links to point to the current workbook.
'
    Dim allLinks As Variant
    allLinks = ThisWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(allLinks) Then
        Dim eachLink As Long
        For eachLink = 1 To UBound(allLinks)
            If InStr(3, "String found in source book name.", allLinks(eachLink)) Then
                ThisWorkbook.ChangeLink Name:=allLinks(eachLink), NewName:=ThisWorkbook.FullName, Type:=xlExcelLinks
            End If
        Next eachLink
    End If
End Sub

置換したい古いリンクに合わせて “ソースブック名で見つかった文字列 "を変更するだけです。すべてのリンクを置換したい場合はブロックを削除することができます。

0
0
0
2016-01-14 06:57:35 +0000

もう一つの「トリック」 - ソースワークシートをコピーする前に、すべての数式修飾子 = を他の文字に置き換えてください (###= とします)。

0
0
0
2012-03-06 14:49:54 +0000

このマクロを実行するには、両方のワークブックが開いている必要があります。このマクロを実行すると、workbookA!sheet1をworkbookB!sheet1にコピーし、workbookAの参照をすべて置換します。このマクロを実行すると、insert - module1 が &007 にコピーされ、すべての &007 参照が置換されます。このマクロを実行すると、&0071がコピーされ、&007の参照がすべて置き換えられます **粗雑ですが、動作します。そして、WBA &007を右クリックして、下のコードをコピーしてモジュールに貼り付けます。そしてF5を押してマクロを実行します。マクロが実行されない場合は、マクロが有効になっていないことが考えられますので、先に保存して再度開き、マクロを有効にするように促されたら、マクロを有効にしてください。

0
0
0
2015-02-12 20:52:39 +0000

私も同じような問題を抱えていました。WBAへのリンクと一緒に数式が貼り付けられていたのは、WBAで作業していたタブ(シート)の名前がWBBと違っていたからです。私にとってはいつも「最後のシート」だったのですが、片方は「MinFlow」、もう片方は「NormalFlow」という名前になっていました。私は両方の名前を ‘Results’ に変更しましたが、コピー/貼り付けは私が望んでいた通りに動作しました。

0
0
0
2015-04-25 11:54:19 +0000

移動させたいセルを選択します。今すぐ別のワークシート(別タブ)にドラッグ&ドロップして移動してみてください。ここで厄介なのが、cmd (mac) または alt (win) を押すだけで、別のタブにセルをドロップすることができるようになります。

0
0
0
2014-06-24 17:11:43 +0000

これを実現するには、通常通りにセルを新しいワークシートにコピーしてから、検索して置換し、数式の古いファイルパスを削除することで実現しました。これで削除され、数式は=J2に復元されます。

0
0
0
2015-12-30 08:23:53 +0000

Hi here is a simple solution to this problem:

  1. いつものようにセルをコピーします。式の中で選択し、以前のワークブック[WorkbookA.xlsx]にリンクしているテキストをコピーします。変更したいすべてのセルを選択し、CTRL+Fを押して、置換タブを選択します。WorkbookA.xlsx]を空のスペースで置き換えてください(つまり、Replace withフィールドに何も書かないで、Replace Allを押してください。
0
0
0
2016-04-25 08:36:13 +0000
  1. いつものようにシートをコピーします。(タブを右クリックして「移動またはコピー」を選択) これは書式設定のためのものです。元のシートからすべてのセルをコピーします(Ctrl+Aまたは左上の三角形とCtrl+Cを使用)

  2. 新しいワークブックに値として貼り付けます (Step-1シートの上に) (貼り付けオプション>123)

-1
-1
-1
2014-06-24 18:04:42 +0000

コピー元のワークブック(WorkbookA.xlsx)で、コピーしたいシートを選択します。

-1
-1
-1
2015-10-06 11:52:47 +0000

シートを移動させたいシートのコピーを作成してください。それを「WorkbookA.xlsxのコピー」という名前に変更します。ここで、シートを移動させたいワークブックと同じように、新しいワークブックを開きます。作成したコピーワークブックのシート(WorkbookA.xlsxのコピー)を右クリックして、「移動またはコピー」を選択し、シートをWorkbookB.xlsxに移動します。これで完了です。