我如何将此算法转换为 Excel?

我如何将此算法转换为 Excel?

我如何才能将此算法转换为适用于 Microsoft Excel 的算法:

For each value in A:A

Check values in C:C

If A[i] - C[j] = 30 minutes 

Then D[j] = B[i]

Iterate

下图是时间数据的一个例子:

数据

答案1

在单元格 D1 中:

=IF(ROUND((A1-C1)*24*60,1) = 30, B1,"")

然后将其向下拖动以获取所有值。

这将获取 A1 - C1,为您提供时间的十进制表示,将其乘以 24 和 60 得到分钟,将其四舍五入到最接近的整数分钟,最后评估它是否为 30。如果是,则显示 B1,如果不是,则显示空白单元格。

根据您的使用情况,您可能需要使用 < 或 > 来包含不完全是 30 的值。

答案2

我这样做了并且效果很好:

Sub Process()

Dim i,j,N,M as Integer

Dim Time_Diff as Integer

Dim TimeA,TimeC as Date

For i = 1 to 5
    TimeA=worksheets("Data").Range("A"&i).Value 
    For j = 1 to 17
        TimeC=worksheets("Data").Range("C"&j).Value 
        if  Datediff("n",TimeA,TimeC) = 30 then 
         worksheets("Data").Range("D"&j)=worksheets("Data").Range("B"&i)
         Goto SkipThis
         End if 
     Next j 
SkipThis:   
Next i

End sub

相关内容