初心者です。お教えお願いします
エクセル2003です
空白行及び0をなくしたいのですが(C列を入力された時点で自動でE列のようにしたい)
関数の場合及びVBAのシートコードを両方教えていただけないでしょうか
VBAのコードは勉強の為です
Sheet1
A B C D E F
16 文字A 文字A
17 文字B 文字B
18 0 文字C
19 文字C 文字D
20 0 文字E
21 文字D 文字F
22
23 文字E
24
25 文字F
文字はC16~C80まで入っております
B16~E80までのセルのみで行いたいのですが
他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません
E16~をフォームのコンボボックスのリストにしようと思ってます
よろしくお願いましす
No.1ベストアンサー
- 回答日時:
こんばんは!
単純に空白セル及び「0」のセルを削除して上詰めではダメなのですよね?
一例です。
Sheetモジュールにしていますので、
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub Sample1() 'この行から
Dim i As Long, j As Long
Application.ScreenUpdating = False
For j = 2 To 5
For i = 80 To 16 Step -1
If Cells(i, j) = "" Or Cells(i, j) = 0 Then
Cells(i, j).Delete Shift:=xlUp
Cells(80, j).Insert Shift:=xlDown
End If
Next i
Next j
Application.ScreenUpdating = True
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
ありがとうございます
VBAでする事に致しました
あとこのマクロをシートがアクティブなあいだ繰り返し実行しときたいのですが
教えていただけませんか
もう一つ別シートのC16:C80に表記するコードも教えて頂けますか?
お願いします
No.3
- 回答日時:
>文字はC16~C80まで入っております
B16~E80までのセルのみで行いたいのですが
他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません
E16~をフォームのコンボボックスのリストにしようと思ってます
「B16~E80までのセルのみで行いたい」の意味が良くわからないのですが、E16セルにC列の0と空白を除いたリストを作成するならE16セルに以下の数式を入力し下方向にオートフィルして下さい。
=INDEX(C:C,SMALL(IF(($C$16:$C$80<>"")*($C$16:$C$80>0),ROW($C$16:$C$80),1000),ROW(A1)))&""
配列数式ですので、入力後Ctrl+Shift+Enterで確定してください。
このリストを入力規則のリストにしたいなら、「挿入」「名前」「定義」で例えば「リスト」と名前を付けて以下の式を入力します。
=OFFSET($F$16,0,0,SUMPRODUCT((LEN($F$16:$F$80)>0)*1),1)
最後に「データ」「入力規則」で「リスト」を選択し、元の値の欄に「=リスト」と入力してください。
マクロを使いたいなら、以下のような手順で新しいマクロの記録をしてみてください。
「ツール」「マクロ」「新しいマクロの記録」で適当なマクロ名を付けて、C16~C80セルを選択し「データ」「フィルタ」「オートフィルタ」で「オプション」を選択し第一条件を「0」と「等しくない」AND「*」と「等しい」でOKし、そのまま右クリック「コピー」し、E16セルを選択し右クリック「貼り付け」して、最後に「データ」「フィルタ」「オートフィルタ」でフィルタを解除します。
No.2
- 回答日時:
No.1です!
>関数の場合及びVBAの・・・
を見逃していました。
関数の場合、一気に!となると難しいと思われます。
とりあえず別Sheet(Sheet2)に表示する方法です。
Sheet3を作業用のSheetとして使用します。
Sheet3のB16セルに
=IF(OR(Sheet1!B16="",Sheet1!B16=0),"",ROW())
という数式を入れ、列方向・行方向にE80セルまでオートフィルでコピー!
Sheet2のB16セル(A1セルでも構いません)に
=IF(COUNT(Sheet3!B:B)<ROW(A1),"",INDEX(Sheet1!B:B,SMALL(Sheet3!B:B,ROW(A1))))
という数式を入れE80セルまで列方向・行方向にオートフィルでコピー!
(A1セルに数式を入れた場合はA1~D65セルですかね?)←行数は合わせてください。
これでB16~E80セルの空白・「0」を削除したものが表示されますので、
この範囲を範囲指定 → 右クリック → コピー → Sheet1のB16セルを選択
→ 右クリック → 「形式を選択して貼り付け」 → 「値」を選択しOK
この程度しか思いつきませんが、
参考になりますかね?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) ExcelのIF関数 2 2022/04/14 16:11
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) vba 15 2023/04/07 12:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて質問です。 ・デ...
-
Excel2010で、今の、Ex...
-
UNIQUE関数が使えないバージョ...
-
Excelについて質問です。
-
エクセルに詳しい方教えて下さ...
-
Excelで「時間の足し算」はどう...
-
Excelについて質問です。 表の...
-
オートフィルのショートカット...
-
Excel表の文字の幅を狭くしたい
-
勤務表をエクセルで作る際、 最...
-
Excelのフォントについて
-
Excel 2019 のピボットテーブル...
-
エクセルのパスワードの一括解...
-
エクセルのソートについて
-
Excel 連番を入力する方法
-
Excel 漢字二文字の先頭と最後 ...
-
列を増やさずに、月だけの件数...
-
Excelで、10000,20000,30000と...
-
エクセルの検索関数でシート内...
-
Excel 2019 での上書き保存につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル詳しい方教えて下さい
-
ExcelでA列をコピーしたいので...
-
エクセルのセル統合について
-
Excelの関数で起きた現象の原因...
-
Excelファイルが閉じられい!
-
Excelのシート背景に不明な文字...
-
エクセルの枠線
-
Excel 領収書発行
-
エクセル関数の使い方を教えて...
-
C列にF列の担当者(A〜)を順番...
-
ピポットテーブルの参照元を別...
-
EXCEl VBA
-
Excelでの判別方法
-
VBAで、サブフォルダにある複数...
-
"りんご"と"みかん"というシー...
-
マクロについて教えてください。
-
EXCELファイルが読み取り専用で...
-
同一セルに入力規則のリストと...
-
100行50列の表で、1~40列でフ...
-
なぜか「Nextに対応するForがあ...
おすすめ情報