Excel 问题:我怎样才能有一个列,我可以在其中更改另一张工作表上反映已更改数据的数据

问题描述

从这个示例开始

First Photo

因为单元格 A1 是一个列表框/下拉列表,其中包含来自 CELL F2:F6 数据的值

[

Second Photo

2

作为单元格 A2:A6 也是一个带有值的列表框/下拉列表。示例将是通过和失败。

Third Photo

当我根据列表框/下拉列表中的选定值更改 CELLS A2:A6 上的值时,G2:K2 反映了所有更新的更改。

Fourth Photo

Fifth Photo

如果单元格 A1 的值被更改以更新其他行,则其他行也是如此。

Sixth Photo

解决方法

您可以使用 VBA 将您的输入粘贴到另一个单元格中。

首先,按如下方式定义范围的名称

  • 目标行:CELL A1
  • 目标数据:CELL A2:A6
  • 行:CELL F2:F6

screenshot of defining names on ranges

然后,将以下 VBA 放在 [your sheet] 下 VBA editor

Option Explicit
Private Sub Worksheet_Change(ByVal rng As Range)
    If Not Intersect(rng,Range("TargetData")) Is Nothing Then
        Dim rowStr As String: rowStr = Range("TargetRow").Value2
        Dim l As Long: l = Range("Rows").Count
        Dim i As Long
        For i = 1 To l
            If Range("Rows").Cells(i,1).Value2 = rowStr Then
                Dim n As Long: n = Range("TargetData").Count
                Dim j As Long
                For j = 1 To n
                    Range("Rows").Cells(1,1).Offset(i - 1,j).Value2 = Range("TargetData").Cells(1,1).Offset(j - 1,0).Value2
                Next
            End If
        Next
    End If
End Sub

Worksheet_Change() 如果您对工作表进行了一些更改,则会触发。然后检查更改是否在 TargetData 范围内完成。使用“for”循环,找到要更新的行。