2017-03-27 14 views
1

この文字列を別のスレッドから再利用して、ブランク(他の情報の整列に必要)を新しい場所にコピーします。しかし、私はそのコピーアクションが最初の空白で停止し、実際にはそれが停止することがわかります。私が必要とするのは、空白とすべてをブロックとしてコピーし、それをRangeの下に置くことです。私は最初にすべての空白を埋めることを考えましたが、それはちょうど満点値を無限に送ります。データよりも空白が多くなります。空白を含むデータのブロックを他の場所にコピー

Range(Range("P2"), Range("P2").End(xlDown)).Copy '!!!Stops at frist blank!!! 
For idx = 1 To 1 

Columns("P:P").Cut 
    Cells(Range("D2").End(xlDown).Row + 1, "D").Select 
    ActiveSheet.Paste 
Next 

私はなぜそれができないのか分かりません。他の解決策がある場合、私はこのコードである必要はありません。タスクは、関連付けられた1つの情報からレイアウトを変更して、完全な行を「スタック」レイアウトに変更することです。関連するデータ(ブランク付き)が列を繰り返しています。したがって、セグメントは積み重ねられます。コラム全体をカットしたコピー・ペイトは、ほとんどの場合動作していました。

移動する前に、別のセルの空でない値に基づいて範囲をコピーすることができます。しかし、それは新しい範囲の底にある最初の空のセルに着陸する必要があります。私はいくつかの列でこれを繰り返しますが、別々に行うことができます。

BIからBOまでの列のセルを調べ、BHの値が空白でない場合は値( "0"または " - ")を入力するコードを使用すると、最初の問題を回避できます。

答えて

1

あなたのコードと質問はちょっと混乱しますが、これはあなたが探しているものだと思います。ブランクを含むP列のすべてのデータをコピーする必要があります。

Range(Range("P2"), Range("P" & ActiveSheet.Cells(ActiveSheet.Rows.Count, "P").End(xlUp).Row)).Copy 
+0

これは、次のように短縮できます。範囲( "P2"、セル "行数" P ")。終了(xlUp)。ロー)。コピー – user3598756

関連する問題