
No.4ベストアンサー
- 回答日時:
対象範囲を選択した状態で下のプロシージャーを実行してみて下さい。
何行でも同じように動作します。
'積み木マクロ
Sub ggrks()
Dim v: v = Selection
Dim c As Long, r As Long, i As Long
For c = LBound(v, 2) To UBound(v, 2)
For i = 0 To UBound(v, 1)
For r = UBound(v, 1) To LBound(v, 1) Step -1
If r - 1 >= LBound(v, 1) Then
If v(r, c) = "" Then
v(r, c) = v(r - 1, c)
v(r - 1, c) = ""
End If
End If
Next
Next
Next
Selection = v
End Sub
No.3
- 回答日時:
No2氏の回答にもあるように
配列に一度格納して吐き出す事で解消できますが
一点注意があります
「空白セル」とは人間が目で見て空白であっても
コンピューターは空白ではないと判断する事があります
? と思うかもしれませんが 私はこれで悩んだ事があります
それは何かというと 「スペース」です
選択したセルでスペースキーを叩くと、
空白というデータが入ります 見た目は空白ですが
データとしては空白ではありません
これは 入力者が無意識にやってしまう事によるもので、
それ自体を回避する方法はありません
プログラム的に回避するには、置換を使って空白データを
削除する方法があります ループで回し、空白セルを判定する前に、
セルデータを空白置換させてから判定させます
ただ、この方法の場合、入力されているセルに 意図したスペースがある場合それも削除されます
No.2
- 回答日時:
ExcelVBAの初心者です。
私なら次のようにします。おそらくもっとスマートな方法があるだろうとは思うのですが。
① 最初に全データを二次元配列で表のイメージで変数に読み込む。
② 変数の最終行からチェックを開始して、もし空欄があれば一行上の欄のデータをその欄にいれ、一つ上のデータを空欄にする。一つ上の欄が空白ならば、更にもう一つ上のデータを調べる。
③ 一行の処理が終われば、次はもう一行上ののデータを読み込み、②の作業をくりかえす。これを一番上の行までよみこむ。
④ 最後に二次元配列に読み込んだ変数を別の表に書き出す。
もしコードをご希望でしたら、一度ご自身でコードを組むことをおすすめします。ここはVBAの無料の作成場所ではありませんので、コードを組んだ上でご相談されることをおすすめします。
なお、VBAは保守が大変ですよ。おすすめしません。
No.1
- 回答日時:
こんにちは
>削除ではない方法で詰める
ってのが、どういう意味だかわかりませんでしたので、単に「詰める」ものと解釈しました。
対象がたかだか3行分なので何とでもなると思いますが、一般化した考え方の一つとして…
最初に1列分の値をまとめて読み込んで、行の下から見て行って空白でないものを出力するようにすれば宜しいかと。
一列分ができれば、あとは各列をループすれば良いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロで空白セルを詰めて別シートに転記
Visual Basic(VBA)
-
VBAで指定範囲内の空白セルを左詰めで一括削除したいのですが
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
Excelの空白行を上に詰めるVBAについて
財務・会計・経理
-
5
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
6
Excel VBA 空白行をつめる
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
エクセル(VBA)の空白配列の削除について
Excel(エクセル)
-
10
Excel 空白行を上に詰めるマクロ
Excel(エクセル)
-
11
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
12
Excelマクロで空白セルを詰めて別シートに転記するにはどうすればよいでしょうか?
Excel(エクセル)
-
13
空白セルをとばして転記
Visual Basic(VBA)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
16
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
17
別のシートから値を取得するとき
Visual Basic(VBA)
-
18
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
19
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
20
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
エクセルで2つの時系列のデー...
-
C# でDataTableの更新を高速化...
-
ACCESS VBA インデックスが有効...
-
この行は既に別のテーブルに属...
-
Excelのマクロでワードのテキス...
-
DataGridViewのデータの引渡し...
-
データの名称?
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
クレジットカードの磁気データ...
-
ビットシフトについて
-
GETはできるがPOSTができない、...
-
Excel ピボットテーブル 外部...
-
ExcelVBAでCSVファイル簡単に取...
-
C++ 音のリアルタイム処理
-
曲線グラフからピーク値を求め...
-
文字の上下反転処理
-
配列でデータが入っている要素...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
ACCESSからEXCELに出力する際、...
-
この行は既に別のテーブルに属...
-
特定のデータの抽出方法を教え...
-
Accessで該当データにフラグを...
-
Excel VBAでのオートフィルター...
-
ユーザーフォームのテキストボ...
-
[C言語] コメント文字列を無視...
-
DataGridViewのデータの引渡し...
-
エクセルで2つの時系列のデー...
-
VBA 空白セルを削除ではない方...
-
CString型の文字列連結について
-
S9タイプからXタイプにデータ...
-
C# でDataTableの更新を高速化...
-
VBA 円グラフ 特定条件に一致し...
-
二分探索の平均探索回数
おすすめ情報