ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの隣列と同じ行だけセルを選択したい。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
いつもお世話になっております。

掲題の通り、隣列と同じ数の行を選択する方法を模索しております。皆様のお知恵をお借りできれば幸いです。


今、例えば、以下のようなファイルがあります。
A列:全行、空欄。
B列〜E列:1〜30行まで飛び飛びで空欄の行あり。

マクロの記録で、以下のような作業を記録したいと思っています。

A1:E30までを選択。罫線入力したり、色をつけたりする。



問題は、このマクロで、範囲の違うファイルにも使用したいということです。例えば、

A列:空欄
B〜C列:3〜15行目に飛び飛びで空欄あり。

A3:C15を範囲として選択したい。



私は、Shift+Ctrlで、範囲を一気に選ぼうとしました。しかしまず第一に、A列からは範囲を指定できません。右端の列も、ケースによって変わります。B列からも考えましたが、セルの空欄が一定でないため不可能でした。何か、よい方法はないかと頭を抱えております。アドバイス、よろしくお願いいたします。

コメント(4)

簡単なのは、UsedRangeを使う方法です。

Sub Test1()
  Dim rngA As Range
  Set rngA = ActiveSheet.UsedRange
  MsgBox rngA.Address
  rngA.Select
End Sub

それで支障があるときは、左端,上端,右端,下端のセルをそれぞれ見つけて利用するとか。

Sub Test2()
  Dim rngF(1 To 4) As Range
  Dim rngA As Range
  Set rngF(1) = Cells.Find _
      (What:="*", LookIn:=xlFormulas, After:=Range("IV65536") _
      , SearchOrder:=xlByColumns, SearchDirection:=xlNext)
  Set rngF(2) = Cells.Find _
      (What:="*", LookIn:=xlFormulas, After:=Range("IV65536") _
      , SearchOrder:=xlByRows, SearchDirection:=xlNext)
  Set rngF(3) = Cells.Find _
      (What:="*", LookIn:=xlFormulas, After:=Range("A1") _
      , SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
  Set rngF(4) = Cells.Find _
      (What:="*", LookIn:=xlFormulas, After:=Range("A1") _
      , SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
  If rngF(1) Is Nothing Then
    Exit Sub
  End If
  MsgBox rngF(1).Address & vbTab & rngF(1).Value & vbCrLf _
     & rngF(2).Address & vbTab & rngF(2).Value & vbCrLf _
     & rngF(3).Address & vbTab & rngF(3).Value & vbCrLf _
     & rngF(4).Address & vbTab & rngF(4).Value & vbCrLf

  Set rngA = Range(Intersect(rngF(1).EntireColumn, rngF(2).EntireRow) _
          , Intersect(rngF(3).EntireColumn, rngF(4).EntireRow))
  MsgBox rngA.Address
  rngA.Select
End Sub
ビリーさん。ありがとうございます。マクロを実行してみました。

今編集している表は、一度関数で空白に指定され、値貼り付けで空白になっている式を含みます。

例えば、A1には、
=if(B1="","","***")
という式で""が返され、それがコピーして値貼り付けになっている状態です。

その中で、マクロを実行しますと、以前関数が入っていた範囲全てを選択します。(EXCEL2003)

今、空欄になっているセルは、何もないものを認識させる方法はありませんでしょうか・・。

重ね重ね申し訳ございません。ご教示いただければ幸いです。
追記ですが
今、別の作業で同じような所でつまづいています。

A1:K500 に数式が入っているセルにて、
?全てのセルを値はりつけ
?J列に値の入っていない行を全て削除
?J列に値の入っている行を選択、別シートにコピー

という作業を目指しています。そこで、私は、

?シート全体を値貼り付けする。
?J列をキーに並び換えをする。
?J列に値が入っている行より下を全て削除。
?タイトル行より下を全て選択、別シートにコピー

という行程を考えています。が・・。どうしても上手くいきません。

トピックから少しはずれる問題ではありますが、ご教示いただけると幸いです。よろしくお願いいたします。
> 今、空欄になっているセルは、何もないものを認識させる
> 方法はありませんでしょうか・・。
の意味が分からないのですが、そのような場合 ↑のTest1とTest2では異なる結果になると思います。
都合のよい方を使えばよいかと。



>A1:K500 に数式が入っているセルにて、
>?全てのセルを値はりつけ
>?J列に値の入っていない行を全て削除
>?J列に値の入っている行を選択、別シートにコピー
>
>という作業を目指しています。そこで、私は、

マクロの記録をベースにやるなら、オートフィルターを利用するのが簡単です。
1.オートフィルタをかける
2.ジャンプ(Ctrl+G)で可視セルを選択する
3.コピペする
多分、これなら記録したものがほとんどそのまま使えるかと思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。