2011-10-18 10 views
0

しばらく検索していましたが、誰かがこれに対して良い方向を提供できるかどうかを調べるために、これをそこに投げることに決めました。私のテーブルには、約24の列によって〜100(および拡大)行があり、のようになります。テーブル/行のゼロ以外の値をすべて検索する

ID yr1 yr2 yr3 yr4 

id1 $-  $-  $35  $- 
id2 $40  $45  $-  $- 
id3 $35  $-  $30  $37 

私は気にしない(すべてゼロの値を無視して、このようになります。このテーブルの表現を作成したいです列の見出しについて):

ID   
id1 $35   
id2 $40  $45  
id3 $35  $30  $37 

単純な(ish)解決策が必要なようですが、私はまだそれを理解していません。どんな助けでも大歓迎です!

+0

私は時間のためにこれに取り組んできましたが、それはVBAなしで動作させることはできません。がんばろう。 –

+0

「ゼロをすべて無視する」と間違って解釈された場合、私はランスに同意します。私はこれが公式には大変難しいと思う - あなたはvbaでいいですか? – brettdj

+0

VBA溶液を添加した。新しいテーブルが新しいシートに移動すると、コードは配列を使用し、効率のためにゼロの代わりにエラーを検討します – brettdj

答えて

0

[更新:削除しました初期の提案とVBAソリューションに置き換える]

Sub ReArrange() 
Dim ws As Worksheet 
Dim X 
Dim lngRow As Long 
Dim lngCol As Long 
X = [a1].CurrentRegion 
For lngRow = 1 To UBound(X, 1) 
    For lngCol = 1 To UBound(X, 2) 
     If X(lngRow, lngCol) = 0 Then X(lngRow, lngCol) = "=1/0" 
    Next 
Next 
Application.ScreenUpdating = False 
Set ws = Sheets.Add 
ws.[a1].Resize(UBound(X, 1), UBound(X, 2)) = X 
On Error Resume Next 
ws.UsedRange.SpecialCells(xlCellTypeFormulas, 16).Delete xlToLeft 
On Error GoTo 0 
Application.ScreenUpdating = True 
End Sub 

enter image description here

+0

#2の問題は、行の最初の非ゼロの項目を見つけて置き換えたいと思っていることです。ゼロを隠すだけです。すなわち、(a1 = 0、a2、a3、a4などをチェックする –

関連する問題