
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel あらかじめ予定表があり、その月毎のセルに、リストの連続データを入れたい 2 2022/04/07 14:20
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 【至急】エクセル関数 5 2022/11/18 13:24
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Word(ワード) Word2013 縦書き上下二段の表、改行を続けると次ページに情報が表示されるようにしたい 3 2022/06/16 09:24
- Excel(エクセル) エクセル 行番号を自動で振るには 3 2022/08/08 20:19
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) エクセルで行を一つにする方法を教えてください 3 2022/04/21 14:07
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロで空白セルを詰めて別シートに転記
Visual Basic(VBA)
-
VBAで指定範囲内の空白セルを左詰めで一括削除したいのですが
Visual Basic(VBA)
-
Excel VBA 空白行をつめる
Excel(エクセル)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
Excelの空白行を上に詰めるVBAについて
財務・会計・経理
-
6
Excel 空白行を上に詰めるマクロ
Excel(エクセル)
-
7
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
エクセルマクロで特定の範囲が空白という条件
Excel(エクセル)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
空白セルをとばして転記
Visual Basic(VBA)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
-
16
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
17
エクセル(VBA)の空白配列の削除について
Excel(エクセル)
-
18
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
19
EXCELのVBAで空白列を削除して左づめにできますか?
Access(アクセス)
-
20
VBA 数式を残して値をクリアについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで半角の?の文字を探し...
-
教えて下さい
-
エクセルでの「外部データの取...
-
C言語プログラム変更
-
Data(加算名詞、不可算名詞)に...
-
データのアップロードやダウン...
-
EXCEL2007の質問です。
-
C#の2次元配列について
-
VBAを使ってOutlookメール本文...
-
情報がパソコン上から流出する...
-
日付処理について
-
SQLで時間差分とその合計の求め方
-
配列でデータが入っている要素...
-
エクセルマクロ 特定数の文字...
-
FROM SQL文 がしたい
-
100万行の連続データを可視...
-
VBAエキスパート
-
フレームワークとはいったいど...
-
マクロで検索条件2つのデータ...
-
2バイトデータのビットシフトに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
特定のデータの抽出方法を教え...
-
二分探索の平均探索回数
-
EXCELVBAでSQLserverからデータ...
-
Accessで該当データにフラグを...
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
アクセス2000で画像データ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
VBにおいてフォーム間の変数の...
-
<VB>String→Object
おすすめ情報