2015-08-20 3 views
-1

Это код, который я до сих пор: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(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 значения, а не значение для каждого дня. Так считают это:

Скажем, у меня есть таблица вроде этого: (Предположим, что Tidal Время А и Tidal Высота B)

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 

Можно ли заполнить искомых значений на основе введенных значений ,
Примечание: Заполнены только 3 или 4 значения.
Они отображаются в разное время для разных наборов данных.

На самом деле, я уже сделал это, используя команду последовательности щелчка правой кнопкой мыши (тренд), что мне нужно, чтобы это выполнялось автоматически запускается после изменения этих значений.

Для уточнения:
«фил в» относится к В незаполненных значений в столбце B. Как и .. Необходимо тренд от того, что значение вводится в следующих значениях, и наоборот. Экстраполяция, если хотите. Кроме того, это должно произойти автоматически, на основе которых клетки заполнены

Причина этой функциональности написанной так просто, как я могу управлять:
Данные дает 4 значения в день. - 4 раза и 4 высоты приливов.
- Пользователь вводит дату, и эти 4 значения заполняются в B ближе к ближайшему времени.
- Таблица должна экстраполироваться, чтобы заполнить неписанные значения.
- Затем, когда время введено. Оно проверяет время со всеми значениями в B. Все, что выше 3.2 по возвращенному значению (высота прилива), которое реагирует на введенное время, дает «да», что-либо ниже дает «нет»

прогноза эквивалента: Так что для последней части, где я даю да или нет, я думал о прогнозируемой функции: =FORECAST(00:45,A10:A33,B10:B33)
где 00:45 это время, введенное пользователем, и прогноз делается на информации, введенной в B. В идеале мне нужен эквивалент VBA, так что 00:45 может быть значением a Application.InputBox

+0

«заполните неизвестные значения», заполните где? Ваш вопрос непонятен. – ManishChristian

+0

В незаполненных пространствах. Как .. Он должен иметь тенденцию от любого значения, вводимого к следующим значениям и наоборот. Экстраполяция, если хотите. Кроме того, это должно происходить автоматически, исходя из того, какие ячейки введены. – Savagefool

ответ

0

Либо введите формулы, основываясь на том, на каком основании вы оцениваете значения, например. если он является линейной:

(клетки ссылки предполагают, что верхний левый вашего примера А1)

в В7: = В6 - (($ B $ 6- $ B $ 12)/6)

затем перетяните его до следующей цифры. Затем сделайте то же самое для B12 и B18 и так далее. Значения будут автоматически обновляться.

Редактировать: Чтобы ответить на другую часть вашего вопроса, вам нужно будет найти время после округления до ближайшего часа.Нечто подобное, если дата вводится в D35 и лист приведены в вашем вопросе sheet1:

Lookup (! D35, sheet1 $ A $ 1: $ A $ 24,3,1)

Если это Безразлично» t проверить, что все время на самом деле отформатированы как раз. Если вам нужно округлить до ближайшего часа, попробуйте TIME (HOUR (D35) + IF (MINUTE (D35)> 30,1,0), 0,0)

Затем в столбце C используйте инструкцию if, чтобы различить если значения больше 3.2, например в C2: = IF (B2> 3,2, «да», «нет»)

Поиск должен возвращать да или нет.

+0

Удивительно, что это можно сделать в визуальной форме, чтобы я мог установить динамически изменяющееся значение? Например, были введены четыре значения, чтобы они автоматически изменялись во всех остальных ячейках? Это сложно, потому что линия трендов имеет две средние точки. и значения, введенные в изменении B, в зависимости от времени прилива в то время, математика ломается, как только это произойдет. – Savagefool

+0

Откуда берутся ценности? Удаляет ли все остальные значения автоматически? Я думаю, что если это так, вам может понадобиться написать визуальный базовый макрос на листе, который вызван изменением рабочего листа, находит значения, которые были заполнены, вычислены и введены. Вам нужно будет поместить макрос в рабочий лист со следующим синтаксисом: Закрытое подчинение Worksheet_Change (ByVal Target As Range) End Sub – RET

+0

Так что в основном данные дают 4 значения в день. 4 раза и 4 высоты приливов. Пользователь вводит дату, и эти 4 значения заполняются в B рядом с правом или ближайшим временем. Таблице необходимо экстраполировать, чтобы заполнить неписанные значения. Затем, когда время вводится. Оно проверяет время со всеми значениями в B. Все, что выше 3.2 на возвращаемом значении (высота прилива), которое реагирует на введенное время, дает «да», что-либо ниже дает «нет», , – Savagefool

Смежные вопросы