2017-10-11 2 views
0

私は、それらの間の列Bの空白行を削除し、列Dに結合する式またはvbaコードを作成しようとしています。データ間の空白行を削除する

enter image description here

+2

他のセルに影響を与えないため、数式は決してうまくいかないでしょう。サブルーチンを意味しますか?これまでに何を試しましたか? SOはコード作成サービスではなく、特定のコーディングエラーの対象となるヘルプを得るためのフォーラムであることを忘れないでください。 – nbayly

+1

@nbayly私はOPは列AとBのそれぞれからデータを読み取るが、空白を無視する列DとEに存在する式を欲しいと思うと思う。 – JNevill

+0

@JNevillまさに! –

答えて

0

式のアプローチを、これを試してみてください。この式を入力して

=IFERROR(INDEX($B$1:$B$800, SMALL(IF(($B$1:$B$800)="", "", ROW($B$1:$B$800)-MIN(ROW($B$1:$B$800))+1), ROW(A1))),"") 

セルE1にドラッグしてドラッグします。配列式なので、CTRL + SHIFT + ENTERを使用して入力する必要があります。

そして細胞D1この式

=IFERROR(INDIRECT("A"&IFERROR(SMALL(IF(($B$1:$B$800)="","",ROW($B$1:$B$800)-MIN(ROW($B$1:$B$800))+1),ROW(A1)),0)),"") 

を入力しても底にドラッグ。これは配列式であるため、CTRL + SHIFT + ENTERの組み合わせで確認する必要があります。

enter image description here

+0

それは私のために働いていない、私はあなたに言わなければならない、それらの空白では、実際には空白で、数式に影響するかどうかはわからない数式です。 –

+0

私の答えに式の値を含めるように調整しました。 –

+0

私は別の問題を抱えています。例1と例2の両方にDogなどの同じ項目があるとしたらどうでしょうか?例1と例2の両方に1つの項目しかありませんが、同じものを持っているとします。どのように区別するのでしょうか? –

0

Sub test() 
    Sheets("Sheet2").Range("D1:E200").Value = Sheets("Sheet1").Range("A1:B200").Value 
    Sheets("Sheet2").Range("D1:E200").SpecialCells(xlCellTypeBlanks).Delete xlShiftUp 
    Sheets("Sheet1").Range("D1:E200").Value = Sheets("Sheet2").Range("D1:E200").Value 
End Sub 
+0

私はそれをシフトまたは右にすることはできません、それは静的な状態にする必要があります。 –

+0

なぜ値を別のシートに貼り付けてそこからセルをコピーしないでください。同じ行にコードを1行追加してください。一時シートから値を削除したり、シート自体を削除したりする必要があります。 –

0

私がレポートに空白行を削除するには、コードのこの小さなビットを複数回使用しました。それは列 "A"のデータを持つ最後の行を見つけ出し、何もない場合はその行を削除します。

lastRow = Cells(Rows.Count, "A").End(xlUp).Row 

Do While lastRow >= 1 
If Cells(lastRow, 1).Value = "" Then Rows(lastRow).Delete 
lastRow = lastRow - 1 
Loop 
+0

は行を削除できません。すべての行が維持されなければなりません。 –

関連する問題