質問: excelのvbaで空白列を削除して左づめにできますか? いつも参考にしています。まだ、マクロの記録にチョット手を加えて自動化?している程度の腕前ですが? 仕事の都合で下記の問題を解決しなくてはならなくなり、皆様のお知恵をお借りしたいと思い質問させて頂きます。 エクセルのワークシートに空白のセルがランダムに入っているデータがあります。これを、ある列まで(例ではd列までの左の空白セルをなくして左づめのデータとしたいのです。 (例) | a | b | c | d | e | 1|aaa|bbb|ccc|ddd|eee| 2| |bbb|ccc|ddd|eee| 3|aaa| |ccc|ddd|eee| 4|aaa| |ccc| |eee| 5| | | |ddd|eee| ↓ | a | b | c | d | e | 1|aaa|bbb|ccc|ddd|eee| 2|bbb|ccc|ddd| |eee| 3|aaa|ccc|ddd| |eee| 4|aaa|ccc| | |eee| 5|ddd| | | |eee| ここで、e列以降は詰めないでほしいのです。 できれば、vbaで実現したいのですが、どのような考えで、どのようなコード?を書けばよいのか教えてください。 質問の仕方も用途を得ないで、失礼な質問になっていると思いますが、よろしくお願いします。
回答: こんにちは。 vbaの方法もいろいろあると思いますから、以下もちょって見てください。ただし、定数に限ります。 sub value2left() dim myar as variant dim myar2() as variant dim i as long, j as long, k as long with range("a1").currentregion.resize(, 4) 'd列まで myar = .value ' .clearcontents redim myar2(1 to ubound(myar, 1), 1 to ubound(myar, 2)) for i = 1 to ubound(myar, 1) for j = 1 to ubound(myar, 2) if myar(i, j) <> "" then k = k + 1 myar2(i, k) = myar(i, j) end if next j k = 0 next i application.screenupdating = false .value = myar2 application.screenupdating = true end with end sub