[英]Excel VBA - transfer information from one sheet to a specific cell in a table using a reference number
[英]How can I transfer information from one sheet in Excel to another using VBA based on specific conditions?
我想将 Qty Produced from sheet PLAN 中的值提取到与正确的产品名称和正确的星期几对应的 sheet S 中。 Sheet "S" Sheet "PLAN"到目前为止我尝试过的是: 3 个 for 循环 - 一个循环遍历工作表 S 中的行,其中 Qty 产生的位置,一个循环遍历 Sheet PLAN 中的行,一个循环遍历列中的列表 S,连同 2 个条件 - 一个确保这是相同的产品,一个确保这是正确的日期。 这是我的代码:
Sub production()
For k = 9 To 29 Step 4
For n = 5 To 24
If Sheets("plan").Cells(n, 3) = Sheets("s").Cells(k - 1, 1) Then
For i = 3 To 23
Set p = Sheets("S").Cells(k, i)
If Sheets("plan").Cells(n, 2) = Sheets("s").Cells(7, i) Then
p = Sheets("plan").Cells(n, 4).Value
End If
Next i
End If
Next n
Next k
End Sub
目前,它没有产生任何结果。 此外,我曾尝试使用 excel 公式索引和匹配,但问题是当您自动填充它时,工作表计划中的日期列正在发生变化。 预先感谢您的帮助!
试试下面的 ADO 代码,你必须将 ADO 库添加到你的项目中:
Public Sub RunMe()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
With cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & ThisWorkbook.FullName & "'; " & "Extended
roperties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
'setup the command
Set cmd.ActiveConnection = cnx
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT * FROM [OutPutSheet$] where [ColumnName]=" & "'AnyValueOrVariable'"
rst.CursorLocation = adUseClient
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic
'open the connection
rst.Open cmd
'Assuming that you want to get the data from A2, or else you can even make it more
'dynamic
Sheets("plan").Range("A2").CopyFromRecordset rst
'disconnect the recordset
Set rst.ActiveConnection = Nothing
'disconnect the connection
Set cnx = Nothing
End Sub
您可以在 sql 语句中说明条件。
我建议您的程序使用此流程。
为了实施上述策略,您需要在两个工作表中唯一标识日期。 这就是为什么它们都必须是日期。 文字不行。
日期由整数表示,例如 43909,它标识 2020 年 3 月 19 日。您可以在单元格(例如 A1)或 =TODAY() 中输入此数字,然后将单元格格式化为Date
(右键单击单元格,选择单元格格式和数字选项卡),您将看到日期而不是数字,但您可以使用数字进行计算。 尝试 [B1] =A1 + 1。您可以应用自定义格式“ddd”,并且只会显示 Thu 和 Fri。
使用此方法来创建您的字幕。 只需在第一个标题单元格中输入日期,例如 A3,在 A4 中输入=A3 + 1
,然后将公式向下复制到 A 列中需要的天数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.