从一张纸到另一张纸的数据处理所需的动态更改

时间:2019-02-06 19:29:24

标签: excel

请检查以下代码,并在代码后给出解释:

Sub SaveRecord()
Dim DE As Worksheet     ‘Data Entry Sheet
Dim DR As Worksheet ‘Data Record Sheet
Dim PR As Long      ‘Find the row to paste data into

Set DE = Sheet2
Set DR = Sheet6

PR = DR.Range("B" & Rows.Count).End(xlUp).Row

With DR
    .Cells(PR + 1, 2).Value = DE.Range("B6").Value
    .Cells(PR + 1, 3).Value = DE.Range("F6").Value
    .Cells(PR + 1, 4).Value = DE.Range("B7").Value
    .Cells(PR + 1, 5).Value = DE.Range("F7").Value
    .Cells(PR + 1, 6).Value = DE.Range("H6").Value
    .Cells(PR + 1, 7).Value = DE.Range("B11").Value
    .Cells(PR + 1, 8).Value = DE.Range("E11").Value
    .Cells(PR + 1, 9).Value = DE.Range("H11").Value

    .Cells(PR + 1, 10).Value = DE.Range("B14").Value
    .Cells(PR + 2, 10).Value = DE.Range("B15").Value
    .Cells(PR + 3, 10).Value = DE.Range("B16").Value
    .Cells(PR + 4, 10).Value = DE.Range("B17").Value
    .Cells(PR + 5, 10).Value = DE.Range("B18").Value
    .Cells(PR + 6, 10).Value = DE.Range("B19").Value
    .Cells(PR + 7, 10).Value = DE.Range("B20").Value
    .Cells(PR + 8, 10).Value = DE.Range("B21").Value
    .Cells(PR + 9, 10).Value = DE.Range("B22").Value
    .Cells(PR + 10, 10).Value = DE.Range("B23").Value

    .Cells(PR + 1, 11).Value = DE.Range("C14").Value
    .Cells(PR + 2, 11).Value = DE.Range("C15").Value
    .Cells(PR + 3, 11).Value = DE.Range("C16").Value
    .Cells(PR + 4, 11).Value = DE.Range("C17").Value
    .Cells(PR + 5, 11).Value = DE.Range("C18").Value
    .Cells(PR + 6, 11).Value = DE.Range("C19").Value
    .Cells(PR + 7, 11).Value = DE.Range("C20").Value
    .Cells(PR + 8, 11).Value = DE.Range("C21").Value
    .Cells(PR + 9, 11).Value = DE.Range("C22").Value
    .Cells(PR + 10, 11).Value = DE.Range("C23").Value
'
    .Cells(PR + 1, 12).Value = DE.Range("D14").Value
    .Cells(PR + 2, 12).Value = DE.Range("D15").Value
    .Cells(PR + 3, 12).Value = DE.Range("D16").Value
    .Cells(PR + 4, 12).Value = DE.Range("D17").Value
    .Cells(PR + 5, 12).Value = DE.Range("D18").Value
    .Cells(PR + 6, 12).Value = DE.Range("D19").Value
    .Cells(PR + 7, 12).Value = DE.Range("D20").Value
    .Cells(PR + 8, 12).Value = DE.Range("D21").Value
    .Cells(PR + 9, 12).Value = DE.Range("D22").Value
    .Cells(PR + 10, 12).Value = DE.Range("D23").Value
'
    .Cells(PR + 1, 13).Value = DE.Range("E14").Value
    .Cells(PR + 2, 13).Value = DE.Range("E15").Value
    .Cells(PR + 3, 13).Value = DE.Range("E16").Value
    .Cells(PR + 4, 13).Value = DE.Range("E17").Value
    .Cells(PR + 5, 13).Value = DE.Range("E18").Value
    .Cells(PR + 6, 13).Value = DE.Range("E19").Value
    .Cells(PR + 7, 13).Value = DE.Range("E20").Value
    .Cells(PR + 8, 13).Value = DE.Range("E21").Value
    .Cells(PR + 9, 13).Value = DE.Range("E22").Value
    .Cells(PR + 10, 13).Value = DE.Range("E23").Value

    .Cells(PR + 1, 14).Value = DE.Range("F14").Value
    .Cells(PR + 2, 14).Value = DE.Range("F15").Value
    .Cells(PR + 3, 14).Value = DE.Range("F16").Value
    .Cells(PR + 4, 14).Value = DE.Range("F17").Value
    .Cells(PR + 5, 14).Value = DE.Range("F18").Value
    .Cells(PR + 6, 14).Value = DE.Range("F19").Value
    .Cells(PR + 7, 14).Value = DE.Range("F20").Value
    .Cells(PR + 8, 14).Value = DE.Range("F21").Value
    .Cells(PR + 9, 14).Value = DE.Range("F22").Value
    .Cells(PR + 10, 14).Value = DE.Range("F23").Value

End With

结束子

首先,我想告诉您以上代码的工作原理

它将数据值从数据输入工作表单元复制到数据记录工作表单元。

  • 数据输入表的必填值单元格B6,F6,B7,F7,H6,E11,H11
  • 这些单元格中的数据是强制性的

**数据输入表B14:F23的可选值单元格 **这些单元格中的数据最小值为1,可以在D14或E14中输入,在整个范围中最大值为50。

它将数据值粘贴到“数据记录表”单元格中 B5,C5,D5,E5,F5,G5,H5,I5 J5:N14

您会注意到第一条记录是从B5开始到N14 第二条记录从B6:N15开始(并继续进行),第二条记录覆盖了之前无法接受的先前单元格J5:N14的数据。

我需要的解决方案是从“可选值”单元格之后的位置开始下一条记录(并继续进行), 假设 如果数据输入工作表单元格的值在D14结束 然后从B15的数据记录表单元格开始下一个记录 如果“数据输入表单元格”值以F21结尾 接下来的记录将从B22的数据记录表单元开始

为了更好地理解,我在下面提供了一个链接,用于手动将数据从“数据输入表”复制到“数据记录表”。

https://drive.google.com/open?id=1ABg7Db2-ZGCmMTfg_rjqOCQ8HTZFe-9w

注意:不必在上面的代码中进行更改。

请帮帮我。

感谢与问候

Muneeb

0 个答案:

没有答案