用表格中的数据填写表格

问题的形成

我们有一个数据库(列表、表格——随便你怎么称呼它),在一张纸上包含有关付款的信息 时间:

任务:为从此列表中选择的任何所需条目快速打印出现金收据(付款、发票……)。 去!

步骤 1. 创建表单

在书的另一张纸上(我们称这张纸 表单) 创建一个空表单。 您可以自己做,也可以使用现成的表格,例如从首席会计师杂志的网站或 Microsoft 网站上获取。 我得到了这样的东西:

用表格中的数据填写表格

在空单元格中(帐户、金额、收款人 等)将从另一张表的付款表中获取数据——稍后我们将处理这个问题。

第 2 步:准备付款表

在为我们的表格从表格中获取数据之前,表格需要稍微现代化。 即,在表的左侧插入一个空列。 我们将使用在我们要向表单中添加数据的行的对面输入一个标签(让它成为英文字母“x”):

步骤 3. 链接表格和表单

对于通信,我们使用函数 VPR(VLOOKUP) - 你可以在这里读更多关于它的内容。 在我们的例子中,为了将数据表中标记为“x”的付款编号插入表格的单元格 F9,您必须在单元格 F9 中输入以下公式:

=VLOOKUP(“x”,数据!A2:G16)

=VLOOKUP(“x”;数据!B2:G16;2;0)

那些。 翻译成“可以理解的”,函数应该在数据表的A2:G16范围内找到以字符“x”开头的一行,并给出该行第二列的内容,即付款号。

表单上的所有其他单元格都以相同的方式填充——只有公式中的列号发生了变化。

为了用文字显示金额,我使用了函数 自己的 来自 PLEX 附加组件。

结果应如下所示:

用表格中的数据填写表格

第 4 步。所以没有两个“x”……

如果用户对多行输入“x”,VLOOKUP 函数将只取它找到的第一个值。 为避免此类歧义,请右键单击工作表选项卡 时间 然后 来源文字 (源代码). 在出现的 Visual Basic 编辑器窗口中,复制以下代码:

Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str As String If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then str = Target.Value Application.EnableEvents = False r = Cells(Rows.Count , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub  

此宏可防止用户在第一列中输入多个“x”。

嗯,就是这样! 享受!

  • 使用 VLOOKUP 函数替换值
  • VLOOKUP 函数的改进版本
  • PLEX 附加组件中的单词量(Propis 函数)

 

发表评论