Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 日/时差VBA_Excel_Vba - Fatal编程技术网

Excel 日/时差VBA

Excel 日/时差VBA,excel,vba,Excel,Vba,您好,我正在尝试计算K列和J列中的数据之间的时间差。我需要知道数据更新所需的时间,以及使用这些列所需的天数、小时数或分钟数。我还希望仅当A列中的名称匹配时,才获得平均时间,并在N列中输入该信息。这是我到目前为止对第一部分的了解 ActiveSheet.Name=原始数据 范围m2:M.Value=K2:K-J2:J>1+d:hh:mm 谢谢你的帮助。这应该会得到你想要的结果。用于节省必须始终写入工作表原始数据的时间。块内以a开头的任何内容。指工作表原始数据 该配方经过修改,但允许使用31天以上。

您好,我正在尝试计算K列和J列中的数据之间的时间差。我需要知道数据更新所需的时间,以及使用这些列所需的天数、小时数或分钟数。我还希望仅当A列中的名称匹配时,才获得平均时间,并在N列中输入该信息。这是我到目前为止对第一部分的了解

ActiveSheet.Name=原始数据 范围m2:M.Value=K2:K-J2:J>1+d:hh:mm


谢谢你的帮助。

这应该会得到你想要的结果。用于节省必须始终写入工作表原始数据的时间。块内以a开头的任何内容。指工作表原始数据

该配方经过修改,但允许使用31天以上。然后,我们使用将M2单元格中的公式复制到与K列中上次使用的单元格相同的行。公式中的引用会自动调整以指向正确的行

编辑:更新以计算列A中列出的每个名称的平均运行时间。这更复杂,因为我们无法直接平均列M中的值,因为我们已将它们转换为文本格式。我选择使用Z列来保存我们需要的数字时间值。您可以选择任何其他未使用的列,也可以隐藏该列,使其不显示

最后使用的行存储在变量中,因为我们需要在几个不同的位置使用它。第K列和第J列之间的数值差存储在第Z列中。然后根据第Z列中的值计算第M列中的文本值

最后,使用以下公式计算N列中的平均值。这将检查列A中使用的所有行,找到与当前行同名的行,然后对所有匹配行的列Z中的所有值求平均值

需要注意的一个要点是:如果添加或删除任何行,则N列中的所有公式都需要重写。这是因为如果添加或删除行,这些公式中存储的最后一行值将变得不正确

With Worksheets("Raw Data")
  Dim lngLastUsedRow As Long
  lngLastUsedRow = .Cells(.Rows.Count, "K").End(xlUp).Row

  .Range("Z2").Formula = "=K2-J2"
  .Range("Z2:Z" & lngLastUsedRow).FillDown

  .Range("M2").Formula = "=FLOOR(Z2,1)&"":""&TEXT(Z2,""hh:mm"")"
  .Range("M2:M" & lngLastUsedRow).FillDown

  .Range("N2").Formula = "=AVERAGEIF(A$2:A$" & lngLastUsedRow & ",A2,Z$2:Z$" & lngLastUsedRow &")"
  .Range("N2:N" & lngLastUsedRow).FillDown
End With

成功了,但是,它没有涉及第二部分,即如果名称在A列中匹配,则平均时间,该时间在N列中输入。有关名称在A列中匹配的更多信息。您是指相同的名称出现在A列的不同行中,还是指A列中的名称与不同列中的名称匹配?我道歉。我的意思是相同的名字出现在A列的不同行中。我将如何构建此代码?例如假设我希望通过A列中的匹配名称和B列中的匹配作业任务来查找平均时间。我将在代码中的何处添加最后一部分?若要获取B列中名称的平均时间,请复制紧靠末尾的最后2行,并使用。将目标列从N更改为您想要使用的任何列,并将AVERAGEIF公式中的引用从A更改为B。因此,如果我们使用列O:.RangeO2.formula==AVERAGEIFB$2:B$&lngLastUsedRow&,B2,Z$2:Z$&lngLastUsedRow&然后是.RangeO2:O&lngLastUsedRow.FillDown。如果您想显示按名称和作业任务组合的平均值,那么这更适合于透视表