我在一家本地公司工作,该公司使用过时的系统,依赖于大量的手动数据输入。尝试使用excel vba和公式以一些更快的功能来缓解痛苦。我已经构建了一个充满公式和vba按钮的电子表格。我确实在最后一部分,现在已经被困住了至少两周。时间已经不多了,我希望得到一些帮助。
电子表格有两张名为“Sheet1”和“Sheet2”的图纸。在Sheet1上,我使用一个按钮来连接并将数据移动到一个单元格L11中。在L8中,我每天都有不断变化的日期。数据输入的工作方式如下:我输入4月11日的数据,然后将L8中的日期更改为4月14日(可能是任何一天,仅使用14作为示例)来输入下一组数据。在Sheet2上,我将每个列标记为月中的天数,即A列= 1月4日,B列= 2月4日,C列= 3月4日等等,直到30或31月末等于列AD或AE。
我想要代码做的是从sheet1上的单元格L11移动数据,根据sheet1上L8的日期,数据在相应的日期从sheet1移动到sheet2。因此,单击按钮,宏/ vba代码在sheet2上找到日期,并在L8 sheet1中查找日期并说: “我在L8看到了一个4月17日的日期,在Sheet1上的单元格L11中有什么数据?好吧...... L11 sheet1中有数据。我将继续从L11获取数据并将其粘贴到第17列(列Q)在下面的下一个可用插槽中。然后我将确保从Sheet1中删除数据并将用户放回Sheet1准备好再次使用。“
请记住,L8 sheet1(日期)中存在的数据包含vlookup公式。如果不需要,我很乐意在匹配日期时采取其他想法。或者就此而言,任何其他比你上面和下面所见的更好的想法我总是乐于接受建议。此外,我用来连接最终在单元格L11 sheet1中结束的数据的按钮是记录的宏。基本上我记录了复制特定单元格并将它们粘贴在一个单元格中,然后插入一个单元格,将连接的数据按下一个单元格,这样我就可以输入多组数据。
这是我一直在研究的最新代码。当我为i和j使用循环时,代码没有错误输出,但是在运行时它没有做任何事情。我最近尝试添加k和m,但我正在打的墙不会让步。请帮忙......
Sub senddatatosheet2()
Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long
Dim mydate As String
lastrow1 = Sheets("sheet1").Range("L" & Rows.Count).End(xlUp).Row
For i = 8 To 8
For k = 11 To 11
mydate = Sheets("sheet1").Cells(i, "L").Value
Sheets("Sheet2").Activate
lastrow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
For j = 1 To lastrow2
For m = 2 To lastrow2
If Sheets("sheet2").Range(Cells(j, "A")).Value = mydate Then
Sheets("Sheet1").Activate
Sheets("Sheet1").Range(Cells(11, "L")).Copy
Sheets("Sheet2").Activate
Sheets("Sheet2").Range(Cells(j, "A"), Cells(j, "AD")).Select
ActiveSheet.Paste
End If
Next j
Next m
Application.CutCopyMode = False
Next i
Next k
Sheets("Sheet1").Activate
Sheets("sheet1").Range("A1").Select
End Sub
答案 0 :(得分:0)
如果我错了,请纠正我......
您在Sheet1!L8中输入日期,然后在您所做的任何单元格中输入您想要的任何数据,这些数据全部连接到Sheet1!L11。
您想将Sheet1!L11中的数据传输到Sheet1!xy(其中x =当天要进入的数据列,y =下一个空行),谁的日期在Sheet1中!x1,它匹配Sheet1!L8
如果是,则应执行以下操作:
Sub btnNext_Click()
Dim MyDate As Date
Dim ColFound As Long, NextRowToUse As Long, MyData As String
Dim RowThatContainsDates As Long
'Enter the row that contains the dates across the top
RowThatContainsDates = 1
'Get the date from Sheet1!L8
MyDate = Sheets("sheet1").Cells(8, 12).Value
'Get the data from Sheet1!L11
MyData = Worksheets("Sheet1").Cells(11, 12).Value
'Get the column where the date in Sheet1!L8 is found
ColFound = Worksheets("sheet2").Rows(RowThatContainsDates).Find(MyDate, LookIn:=xlFormulas, LookAt:=xlWhole).Column
'Get the next row to use for the selected Column
NextRowToUse = 1
Do While Worksheets("sheet2").Cells(NextRowToUse, ColFound).Value <> ""
NextRowToUse = NextRowToUse + 1
Loop
'Duplicate the text from Sheet1!l1 to the Row and Column found
Worksheets("Sheet2").Cells(NextRowToUse, ColFound).Value = MyData
'Clear the contents of the cells containing the original data
Worksheets("Sheet1").Range("L3:L6").ClearContents
End Sub