2016-03-20 3 views
1

У меня проблемы с моей головой вокруг этого.Создайте таблицу пошаговых значений с неполными данными

У меня есть таблица значений, у которых отсутствуют поисковые запросы.

Price Company 1 Company 2 Company 3 
$100  5   -   1 
$200  2   9   - 
$300  6   -   - 
$400  -   2   1 
$500  4   -   - 

Я хочу, чтобы заполнить эти недостающие записи со значениями из соседней ячейки, так что я могу еще график их поэтапно.

Price Company 1 Company 2 Company 3 
$100  5   **9**   1 
$200  2   9   **1** 
$300  6   **9**  **1** 
$400  **6**   2   1 
$500  4   **2**  **1** 

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

ответ

1

Это должно заставить вас начать.

Sub Stepwise() 
    'get the worksheet 
    With Worksheets("sheet1") 
     'get the block of data radiating out from A1 
     With .Cells(1, 1).CurrentRegion 
      'shift off the header row and right one column 
      With .Cells.Resize(.Rows.Count - 1, .Columns.Count - 1).Offset(1, 1) 

       'get rid of hyphens 
       .Replace what:=Chr(45), replacement:=vbNullString, lookat:=xlWhole 
       'optional - get rid of any non-numeric values 
       On Error Resume Next 
       .Value = .Value2 
       .SpecialCells(xlCellTypeConstants, xlTextValues) = vbNullString 
       On Error GoTo 0 

       'shift one more row down - same number of columns 
       With .Cells.Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) 
        'make sure there are blank cells 
        If Application.Count(.Cells) < .Cells.Count Then 
         'get the blank cells 
         With .SpecialCells(xlCellTypeBlanks) 
          .FormulaR1C1 = "=R[-1]C" 
         End With 
         .Value = .Value2 
        End If 
       End With 

       'shorten by one row - same number of columns 
       With .Cells.Resize(.Rows.Count - 1, .Columns.Count) 
        'make sure there are blank cells 
        If Application.Count(.Cells) < .Cells.Count Then 
         'get the blank cells 
         With .SpecialCells(xlCellTypeBlanks) 
          .FormulaR1C1 = "=R[1]C" 
         End With 
        End If 
        .Value = .Value 
       End With 

      End With 
     End With 
    End With 
End Sub 

Если логика не имеет места для больших зазоров затем попытаться модификации (ы) и вернуться на помощь, если вы застряли.

Stepwise_sample_data_beforeStepwise_sample_data_after
Выборочные данные перед тем ступенчатоВыборочные данные после ступенчатого

+0

Благодаря @Jeeped. Я получаю ошибку во время выполнения, поэтому я не умею работать над функциональностью кода (я новичок в VBA). Элементов не найдено - Строка кода: С .SpecialCells (xlCellTypeBlanks) – Wolfspirit

+0

Не работает ли формула с формулами в ячейках? Я преобразовал в значения и работает – Wolfspirit

+0

Да, формулы в ячейках придется обрабатывать по-разному. См. Мое изменение выше для преобразования значений и всех нечисловых данных. – Jeeped

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