将范围从工作簿复制到另一个工作簿时出现问题:公式

时间:2018-10-17 09:52:43

标签: excel vba excel-vba

我有一本原始工作簿,其中只有一张Sheet1,带有:

  • 单元格C2被命名为“ DEUX”(相对于工作表Sheet1的名称),并包含数字2
  • 单元格D2包含数字3
  • 单元格C3的名称为“ RESULT”(相对于工作表Sheet1的名称),并包含公式“ = DEUX + Sheet1!D2”(给出5)

此源工作簿在path1中。我在目标工作簿path2上有源woorkbook的副本。在其中添加了以下宏:

Public Sub CpyRange()

    Dim pathToSource As String
    pathToSource = "path1" 'the aforementionned path to source workbook
    Dim wkbSource As Workbook
    Set wkbSource = Workbooks.Open(pathToSource & "Source.xlsx")
    Dim wksSource As Worksheet
    Set wksSource = wkbSource.Sheets("Sheet1")
    Dim rangeToCopy As Range
    Application.DisplayAlerts = False
    Set rangeToCopy = wksSource.Range("RangeToCopy")
    rangeToCopy.Copy
    ThisWorkbook.Sheets("Sheet1").Range("RangeToCopy").PasteSpecial xlPasteFormulas
    Application.DisplayAlerts = True
    wkbSource.Close

End Sub

(没有Application.DisplayAlerts = False位,运行宏时,我会弹出窗口“您要移动或复制的公式或工作表包含名称DEUX”等。现在我没有它们这就是我想要的。)

但是运行宏后,我遇到了一个问题:在目标工作簿的工作表C3的单元格Sheet1中,我有一个公式:“ = DEUX +'path1 [Source.xlsx] Sheet1'!D2 “ path1是源wokbook的Windows路径。

我希望具有与源工作簿中相同的公式,即:“ = DEUX + Sheet1!D2”。

这是一个示例,它隔离了我在实际设置中遇到的问题,其中范围RangeToCopy很大,其中有成千上万个单元格,其中包含数十万个公式。我会简单地做到这一点吗?

备注。我有Sheet1!D2而非D2只是为了建模,在实际设置中该单元格位于同一工作簿的另一张工作表中。

2 个答案:

答案 0 :(得分:0)

您可以尝试:

var favorites = JSON.parse(localStorage.getItem('favorites')) || [];
var list = $("#fav-list");
var parent = list.parent();

function addFavList() {
  list.detach().empty().each(function(i) {
    for (var x = 0; x < favorites.length; x++) {
      $(this).append('<li>' + favorites[x] + '</li>');
      if (x == favorites.length - 1) {
        $(this).appendTo(parent);
      }

    }
  });
}

addFavList();

$(document).delegate('.cart', 'click', function(e) {
  var id = $(this).parent().html(),
    index = favorites.indexOf(id);

  if (!id) 
    return;

  if (index == -1) {
    favorites.push(id);
  } else {
    favorites.splice(index, 1);
    $(this).parent().removeClass('fav');
  }

  localStorage.setItem('favorites', JSON.stringify(favorites));
  addFavList();
});


$(document).delegate('#delete', 'click', function() {
  localStorage.clear();
  location.reload();
});

答案 1 :(得分:0)

您可以尝试一种简单的方法 Ctrl + H 并将所有path1[Source.xlsx]替换为""