如何在每秒或每段时间内向单元格添加1

时间:2015-04-06 17:22:42

标签: excel vba excel-vba

大家好,我在找到如何做以下事情时遇到了一些困难。我需要在起始单元格下面的每个单元格中添加一个列,每隔一秒说A1,因为时间过去说13:00:00在单元格B1中。考虑列A:A中的每个单元格都是空白我需要使用excel或vba将1放到下面的单元格中,每秒钟,如前所述。所以一分钟之后,我将从A2开始计算以下最多60个

A
0
1
2
3
.
.
.
...
60

直到我在单元格中指定停止,例如c1 13:01:00D1 13:01:00 C1 STOP 0

我更喜欢用excel公式做到这一点,但我不确定它是否会有效率,因为我将同时执行多达九列,它们将从几分钟到几小时运行,可能天。 所以UDF可能会更好 - 我可能需要测试两种方法

一旦时间停止,我需要将列中的所有单元格放回空白,包括=RTD("mcrtdserver.rtdserver","localhost","Symbol","EUR/USD","1 Second","SymbolData","High",0):)


我实际上正在做的是找到一个最低或最低的高点,当我用一个名为multicharts的程序打开交易时,参考它的DDE connectoin公式。最后一个输入是在我喜欢的任何时期中的时间,只要它存在于多个数字中。我可以有1秒--5秒--10分钟。 公式就像 =RTD("mcrtdserver.rtdserver","localhost","Symbol","EUR/USD","1 Second","SymbolData","Low",0) 其中0是现在1秒或者它可以存在5分钟。因此,我可以使用1和2来查找2秒前的数据,直到很多秒前,我打开了交易。基本上我正在寻找最实用的方法然后参考这些公式来找到高/低的最小值或最大值。低配方只是 {{1}} 在5分钟,15分钟,30分钟和几小时内工作更为实际,因为它们将频繁出现在多个数字中。 我只是试图让我的头脑如何最好地做到这一点 - 无论它是一个vlookup表,从时间/时间到使用一些间隔来磨练更大的时间框架或其他东西。然后我会尝试粘贴。清除列之前记录的高/低的最小值或最大值,以便使用该值,这样该位就不那么重要了。

1 个答案:

答案 0 :(得分:0)

这是一个VBA解决方案 - 注意:在运行时,您无法在Excel中执行任何操作。另外,如果在计时器完成时它被清除,你在A列中计算的是什么?

另外,由于你不能进入并在单元格中添加“STOP”,在运行时,我写了这个假设在C1中是开始时间(24小时格式的小时,分​​钟,秒),以及停止在C2中的时间。

Sub timer()
Dim nowTime As Variant, setTime As Variant, stopCell As String, stopTime As Variant
Dim i             As Integer

i = 1

stopCell = Evaluate(Cells(1, 3).Value)

setTime = Format(Cells(1, 2).Value, "HH:mm")    ' Get the time to start via B1
stopTime = Format(Cells(2, 2).Value, "HH:mm")    'get the time to stop via B2

nowTime = Format(now(), "HH:mm") 'what time is it right now?


Do While nowTime >= setTime And nowTime <= stopTime
    Cells(i, 1).Value = i - 1 'because you also want to start with 0 - if not, remove the "-1"
    Application.Wait (now + TimeValue("00:00:01"))
    i = i + 1
    nowTime = Format(now(), "HH:mm")
Loop

Columns(1).Clear
MsgBox ("Done")


End Sub

但我想我错过了什么 - 所以请让我知道那是什么。据我所知,一个公式将无法做到这一点 - 你需要VBA。但是,再次计算这个顺序的目的是什么?在宏运行时,您将无法在Excel(AFAIK)中工作。