2016-03-20 18 views
1

Başımın bu konuya dolanması konusunda sorun yaşıyorum.Tamamlanmamış verilerle kademeli değerler tablosu oluşturma

Eksik aramaları olan bir değerler tablom var.

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

Hala aşamalı bir şekilde bunları grafiğini böylece bitişik bir hücreden değerler ile bu eksik kayıtlar doldurmak istiyoruz.

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** 

mantık yukarıdaki satırlardan değerini almak olacağını ve hiçbir olası satır yukarıdaki değerleri içerip, sonra aşağıdaki satırlardan sonraki olası değeri almaya. Yukarıdaki örnek bunu göstermektedir. Sayıların konumu, neyin hücre ile doldurulacağını belirlerken sayıların gerçek değerinden daha fazla önem taşır.

cevap

1

Başlamanız gerekir.

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 

mantık büyük boşluklar tutmaz o zaman modifikasyon (lar) girişimi ve eğer takılıyorum yardım için geri gelir.

Stepwise_sample_data_beforeStepwise_sample_data_after
Örnek veri kademeli önceÖrnek veri kademeli

+0

Teşekkür @Jeeped sonra. Bir çalışma zamanı hatası alıyorum bu yüzden kodun işlevselliğini gerçekten çalışamıyorum (VBA ile acemi). Hayır Hücre bulundu - Satır kodu: With .SpecialCells (xlCellTypeBlanks) – Wolfspirit

+0

Formül, hücrelerde formüllerle çalışmıyor mu? Değerlere dönüştürdüm ve – Wolfspirit

+0

çalışıyor Evet, hücrelerdeki formüller farklı şekilde ele alınmak zorunda kalacaktı. Değerlere ve tüm sayısal olmayan veri değişimlerine dönüştürmek için yukarıdaki düzenlememe bakın. – Jeeped

İlgili konular