Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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-自动填充趋势值_Excel - Fatal编程技术网

Excel-自动填充趋势值

Excel-自动填充趋势值,excel,Excel,这是我目前掌握的代码: Sub Tele() Dim rowLoop As Long rowLoop = 1 strValueToFind = Application.InputBox("Enter a Search value in format xx.xx.xxxx, remember that this will only work if you are on 'Tidal' tab", Title:="DATE FIND", Default:=Format(Da

这是我目前掌握的代码:

Sub Tele()

    Dim rowLoop As Long
    rowLoop = 1
    strValueToFind = Application.InputBox("Enter a Search value in format xx.xx.xxxx, remember that this will only work if you are on 'Tidal' tab", Title:="DATE FIND", Default:=Format(Date, "Short Date"), Type:=1)

    'Select the sheets to work through
    Sheets(Array("2015", "2016", "2017", "2018", "2019", "2020")).Select

    For Each ws In ActiveWindow.SelectedSheets

      Debug.Print "Checking " & ws.Name

      ' Loop column A to find value, number corrosponds to letter position in alphabet
      For rowLoop = 1 To Rows.Count
        If ws.Cells(rowLoop, 1).Value = strValueToFind Then ' If value is in C then do something
          ' start on cell found from date needed - look at copying range on same Column
          ' -------------------------------------------------------------------------------------------'
          Sheets("Vessels").Range("C09").Value = ws.Cells(rowLoop, 1).Offset(0, 1).Resize(1).Value
          Sheets("Vessels").Range("C10").Value = ws.Cells(rowLoop, 1).Offset(0, 3).Resize(1).Value
          Sheets("Vessels").Range("C11").Value = ws.Cells(rowLoop, 1).Offset(0, 5).Resize(1).Value
          Sheets("Vessels").Range("C12").Value = ws.Cells(rowLoop, 1).Offset(0, 7).Resize(1).Value
          Sheets("Vessels").Range("C14").Value = ws.Cells(rowLoop, 1).Offset(1, 2).Resize(1).Value
          ' Copy cells 1 cell below found value - Montrose?
          Sheets("Vessels").Range("D09").Value = ws.Cells(rowLoop, 1).Offset(0, 2).Resize(1).Value
          Sheets("Vessels").Range("D10").Value = ws.Cells(rowLoop, 1).Offset(0, 4).Resize(1).Value
          Sheets("Vessels").Range("D11").Value = ws.Cells(rowLoop, 1).Offset(0, 6).Resize(1).Value
          Sheets("Vessels").Range("D12").Value = ws.Cells(rowLoop, 1).Offset(0, 8).Resize(1).Value
          MsgBox ("Found value on col " & rowLoop) '
          Exit Sub
        End If
      Next rowLoop ' This is row number, do something with this

    'Back for next sheet
    Next ws

    ' This MsgBox will only show if the loop completes with no success
    MsgBox ("Date not found, make sure you have input the date correctly and on the right tab")

End Sub
该程序允许用户输入日期并返回当天的潮汐时间和高度。此外,用户需要输入一个时间,并将等效潮位返回给他们。问题是我只有4个值,而不是每一天的值。所以考虑一下:

假设我有一张这样的桌子:(假设潮汐时间是a,潮汐高度是B)

是否可以根据输入的值填写未知值。
注意: 仅填写了3或4个值。
对于不同的数据集,它们在不同的时间出现

实际上,我已经通过使用fill右键单击系列(趋势)命令完成了这项工作,我需要做的是在这些值更改后自动运行

澄清:
“fil in”指的是B列中未填充的值,如。。它需要从输入的任何值走向下一个值,反之亦然。如果你愿意的话,这是一个推断。此外,它需要根据填充的单元格自动进行

此功能的原因尽可能简单地写出来:
该数据每天给出4个值。 -4次和4个潮位高度。
-用户输入日期,这4个值在最接近的时间旁边的B处填写。
-该表需要自行推断,以填写未写入的值。
-然后当时间到了。它使用B中的所有值检查时间。返回值(潮位高度)中高于3.2的任何值与输入的时间相符,都会给出“是”,低于3.2的任何值都会给出“否”

预测当量: 所以在最后一部分,我给出了是或否,我考虑了一个预测函数:
=forecast(00:45,A10:A33,B10:B33)


其中,00:45是用户输入的时间,预测是根据B中输入的信息进行的。理想情况下,我需要与此等效的VBA,以便00:45可以是值a
应用程序。InputBox

可以根据您估计值的任何基础输入公式,例如,如果它是线性的:

(单元格引用假定示例左上角为A1)

在B7中: =B6-($B$6-$B$12)/6)

然后向下拖动到下一个图形。然后对B12和B18执行相同的操作,依此类推。这些值将自动更新

编辑:要回答问题的另一部分,您需要在四舍五入到最近的小时后查找时间。例如,如果在D35中输入日期,并且您的问题中给出的表格是sheet1:

查找(D35,表1!$A$1:$A$24,3,1)

如果这不起作用,请检查所有时间是否都实际格式化为时间。如果您需要四舍五入到最近的小时,请尝试时间(小时(D35)+如果(分钟(D35)>30,1,0),0,0)

然后,在C列中,使用if语句识别值是否大于3.2,例如在C2中:=if(B2>3.2,“是”、“否”)


查找应返回是或否。

填写未知值,填写位置?你的问题不清楚。在空白处。喜欢它需要从输入的任何值走向下一个值,反之亦然。如果你愿意的话,这是一个推断。此外,它需要根据输入的单元格自动进行。这可以在visual basic中完成,以便我可以设置一个动态变化的值吗?例如,输入了四个值,以便在所有其他单元格上自动显示趋势?这很困难,因为趋势线有两个平均点。B中输入的值会随着当时的潮汐时间而变化,一旦发生这种情况,数学就会崩溃。这些值来自哪里?它是否会自动删除所有其他值?我认为如果是这种情况,您可能需要在工作表中编写一个visual basic宏,该宏由工作表中的更改触发,查找已填写的值,计算并输入。您需要使用以下语法将宏放入工作表本身:Private Sub sheet_Change(ByVal Target As Range)End subs基本上,数据每天给出4个值。4次,4个潮位。用户输入日期,这4个值在右边或最近的时间旁的B处填写。该表需要对自身进行外推,以填充未写入的值。然后当时间到了。它用B中的所有值检查时间。返回值(潮位高度)上高于3.2的任何值(与输入的时间相对应)都会给出“是”,低于3.2的任何值都会给出“否”。听起来您最好使用分配给按钮的宏,以便在用户手动输入所有值后执行。它可以循环,插入类似于我建议的公式。唯一的问题是它在00:00和01:00之间的行为-它应该从前几天的最后一个值推断到今天的第一个值,还是应该包装单日循环的值?啊,看,这是我刚才考虑的另一件事。我可以轻松地从前一天的值中提取,在其他偏移粘贴的值下添加一行代码。它应该是从预览天数的最后值推断出来的,这是另一个问题,我也不知道答案。伙计,这很复杂。循环检查输入的值,然后根据这些值插入公式?这个问题的数学听起来很复杂!我不能用那种方式想象数据啊哈。看,这就是我不做数据库的原因!顺便说一句,非常感谢您迄今为止的帮助
Tidal Time  Tidal Height  
01:00   
02:00   
03:00   
04:00   
05:00            5  
06:00   
07:00   
08:00   
09:00   
10:00   
11:00            1.2  
12:00   
13:00   
14:00   
15:00   
16:00   
17:00            5.2  
18:00   
19:00   
20:00   
21:00   
22:00   
23:00            1.1  
00:00