OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセル~空白のセルのある行を非表示に。

  • すぐに回答を!
  • 質問No.153990
  • 閲覧数871
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 59% (70/117)

エクセルで。
例えば、100行の表があって、1行目から順番にデータを入れていくんですが、
データが50行までで終わってしまった場合に、51行目からを、非表示にしたいのです。
Aドライブからのデータの読み込みは、マクロをつかっているので、できればそのあとに文章をくっつけて、1つのマクロで作業を完了したいのです。
具体的に言いますと・・・
A列には1~100までの数字が入力してあります。
B~E列には取り込んだデータ(数字)をVLOOK関数で文字に変換するようになってます。
それ以降は、固定した単位(m3)や、データの数字がそのまま入る・・・という感じです。
そして、101行目はそれぞれの列の合計を出すようにしてます。
つまり、データを読み込んだあと、例えば50行しかデータが無かったら(B50やC50などが空白だったら)、51行目から100行目までをいわゆる『表示しない』にしたいのです。
だいぶ考えましたが・・・・。
よろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

質問内容からすると、B~E列は100行目までVLookUpの算式が入っているような気がしますので、その前提でのマクロです。データを読み込んだ後、データの数分の算式を書き込んでいれば別の話になってしまいますが。
100行目が入力ありの時、100行目からEnd(xlUp)を行うと1行目を返したりするはずなので上から順に逐一調べています。1行目も使用している前提です。
また、質問の意味からは途中には見た目空白の行はないように思えますが、途中行のB列のVLookUpの帰り値が長さ0の文字列(""です)の行は非表示にしてしまいます。
ご参考に。

Sub rowHidden()
  Const DataRowMax = 100 'データの最終行
  Dim rw As Integer '行カウンタ

  Application.ScreenUpdating = False '画面更新をストップ
  For rw = 1 To DataRowMax
    Rows(rw).Hidden = False '一旦表示にする
    If Cells(rw, 2).Text = "" Then
      Rows(rw).Hidden = True '非表示にする
    End If
  Next
  Application.ScreenUpdating = True '画面更新
End Sub
お礼コメント
pc-cad

お礼率 59% (70/117)

うまくいきました。
周りの誰に聞いてもわからなかったことなのに、さすがnishi6さん!!!
先に回答いただいたお二人には、ワタクシの質問の仕方が悪く、本当に申し訳なかったです。
多分お二人とも、すごく詳しい方たちなんでしょうねえ。
nishi6さんに回答をいただくのは3回目だから、多分ワタクシのレベルがおわかりになっておられて、わかりにくい質問でも、意味が通じたのでしょう。
ただ、こういう質問を文章で書くのって本当に難しいです。
また、質問させて下さい。ありがとうございました。
投稿日時 - 2001-10-24 19:16:02
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 51% (1179/2272)

こんにちは。maruru01です。 オートフィルタを使うのはどうでしょう。 コードはこんな感じです。 1行目に項目があるとして、A102には"合計"という文字が入っているとします。   Range("A1:E102").Select   Selection.AutoFilter   'とりあえずB列にフィルタをかけて、空白以外を抽出    ...続きを読む
こんにちは。maruru01です。
オートフィルタを使うのはどうでしょう。
コードはこんな感じです。
1行目に項目があるとして、A102には"合計"という文字が入っているとします。

  Range("A1:E102").Select
  Selection.AutoFilter
  'とりあえずB列にフィルタをかけて、空白以外を抽出
  Selection.AutoFilter Field:=2, Criteria1:="<>"
  'A列にフィルタをかけて、A列の値<=50と合計のみ抽出
  Selection.AutoFilter Field:=1, Criteria1:="<=50", Operator:=xlOr, Criteria2:="=合計"

フィルタをかけるのは、どちらか一方だけにして下さい。
参考になりましたら、幸いです。
です。
お礼コメント
pc-cad

お礼率 59% (70/117)

ありがとうございます。
せっかく教えていただいたのですが、思う通りにいきませんでした。
ワタクシの説明のしかたが悪かったのだと思います。
ご好意感謝いたします。
投稿日時 - 2001-10-24 19:03:41

  • 回答No.2
レベル12

ベストアンサー率 52% (206/389)

pc-cadさんこんにちは こんな感じでしょうか Sub SAMPLE() Dim usedCellCount As Integer '↓B列に何行目まで入力されているかを取得 usedCellCount = Range(Cells(100, 2).End(xlUp).Address).Row '↓100行目まで入力されていたらhiddenを実行しない If used ...続きを読む
pc-cadさんこんにちは
こんな感じでしょうか

Sub SAMPLE()
Dim usedCellCount As Integer
'↓B列に何行目まで入力されているかを取得
usedCellCount = Range(Cells(100, 2).End(xlUp).Address).Row
'↓100行目まで入力されていたらhiddenを実行しない
If usedCellCount = 100 Then Exit Sub
'↓入力されている次の行から100行目までを非表示
Rows(usedCellCount + 1 & ":100").Hidden = True
End Sub

注意事項として、すべての行のHiddenのプロパティを一度Falseにして
(一旦すべての行を表示して)この処理を行った方がよいでしょう。
EXCEL2000 Win98seにて動作確認
お礼コメント
pc-cad

お礼率 59% (70/117)

ありがとうございます。
せっかく教えていただいたのですが、思う通りにいきませんでした。
動作確認までしていただいたのに・・・。
ワタクシの説明のしかたが悪かったのだと思います。
ご好意感謝いたします。
投稿日時 - 2001-10-24 19:05:05
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ