移动一个单元格的值和一个参考公式到该小区

问题描述 投票:0回答:2

我在工作簿几片,其中,如果有一个列表中的号码的倍数我需要超过1。这相邻的列移动的相邻列中的片材在公式中正在使用。我希望公式引用在新的位置值。

这是代码前的表

Table before code manipulation

这是理想的结果,所有的那些和五岁以下儿童有自己的数字移动超过1列,但公式仍引用的单元格。

Table after code manipulation

我已经写了:

For i = 1 To WS_Count
    sheet_name = ActiveWorkbook.Worksheets(i).Name
    row_count = Worksheets(sheet_name).Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row

    For x = 11 To row_count
        cell = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1)
        If cell = "" Then GoTo NextIteration

        If ActiveWorkbook.Worksheets(sheet_name).Cells(x - 1, 1) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1) Or ActiveWorkbook.Worksheets(sheet_name).Cells(x + 1, 1) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1) Then
            ActiveWorkbook.Worksheets(sheet_name).Cells(x, 5) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 4)
            ActiveWorkbook.Worksheets(sheet_name).Cells(x, 4).ClearContents
        End If

NextIteration:
    Next x
Next i

切割是不是在多张工作正常。它不恰当地移动到新的工作表。

是否有移动单元格的值从公式在多张纸上的参照细胞的方法吗?

excel vba
2个回答
3
投票

你可以切值了:

Dim ws As Worksheet, i As Long, x As Long, row_count As Long, v

For i = 1 To WS_Count

    Set ws = ActiveWorkbook.Worksheets(i)
    row_count = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
                 SearchDirection:=xlPrevious, LookIn:=xlValues).Row

    For x = 11 To row_count
        v = ws.Cells(x, 1).Value
        If Len(v) > 0 Then
            If ws.Cells(x - 1, 1) = v Or ws.Cells(x + 1, 1) = v Then
                ws.Cells(x, 4).Cut ws.Cells(x, 5)
            End If
        End If
    Next x
Next i

0
投票

为什么不能复制公式? https://docs.microsoft.com/en-us/office/vba/api/excel.range.formula

该算法

for.... 
   if ....  
      You can copy formula to the adjacent cell, then empty the cell

如果直接从一个单元格复制公式至另一个,公式不会改变

© www.soinside.com 2019 - 2024. All rights reserved.