• 締切済み

エクセルマクロ)VBAの書き方について

初めてのマクロ作成に挑戦しようとしたのですが、さっそく壁に当たってしまい助けていただきたいです。 ■質問 A行に下記の数字が入っているとします。 この時、一番下の1300を元に、一番上の1300のセルをSelectしたいのですが、どのようにしたらよいのでしょうか? 今、試みていたのは、一番下の1300を使って、レンジA:Aを検索してみる方法です。それもできませんでしたが。。。 ※一番下の1300は、ここまでの過程でSelect状態になっています。 ※オフセットでの移動は希望していません。 ※選択中のセル(値)をみて、同じセル(値)が入った同列一番上のセルを選択したいです。 ※選択中のセルが下記の1200であった場合、一つしかないので、それを選択して欲しいです。 1000 1000 1100 1200 1300 1300 1300 1400 すみません、同じ内容の質問を見つける事が出来なかったので質問させていただきました。 よろしくお願いいたします。

みんなの回答

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

こういうのじゃダメなんですかね。テストはやってないんですが。 Dat_1 = Selection.Value I = 0 Do I = I - 1 Dat_2 = Selection.offset(I).Value Until Dat_1<>Dat_2 I = I + 1 この状態で、Selection.Offset(I)が一番上の"1300"になってるかと。 こういう風にOffsetで順に調べていくのが一番簡単で分かりやすいと 思うんですが、どうしてOffsetが使えないんですかね・・・。

関連するQ&A

  • ExcelでのVBAマクロについて

    質問させていただきます。 今現在、知人に設定していただいた一つのマクロを使って作業しています。 (そのマクロ自体は【選択したセル】と【直下のセル】のデータを「テキスト」として『前後のスペース』を削除し「セル内改行」で結合する。高さ調整後、1セル分上がる。というものです) 今までは1セルずつこれを使って結合し、セル内文章をまとめて一番上に持ち上げていました。しかし、今回私がやりたいのは1セルずつマクロを実行(ショートカットキーを使っていますが)するのが手間なので、5セル(上下方向にです)に対して一気に先ほどの既存マクロを適応する、という風にしたいのです。(選択セルと直下セルが結合されて選択セル内文章が増えるというやり方ですので、一番初めのポインタ位置は結合したいデータの下から二つ目でないといけません。その場合、この既存マクロを4回繰り返すマクロがほしいのです) 私自身、「記録」機能を使ったマクロしか組んだことがなかったのでVBAのほうをいじってみても知識不足でエラーばかり出てしまい、困ってしまいました。 とても説明がややこしく、分かりづらいとは思いますが、ご回答いただけると有り難いです。

  • マクロについて

    マクロ初心者です。 下記の操作をマクロで行いたいのですがうまくいかないのでどうすればうまくマクロが作動するのか教えて頂ければと思います。4の操作までは正しく作動しましたが5以降に困っています。。。 どなたかお願いしますmm (1) A列にフィルターをかけて[??????}を含むものを選択 (2). 1に.該当するもB列のDataを値のみ数値と値のClear (3) 2の後に再びA列で[??????]を含まないものを選択 (4)  3に該当するA列のDataを数値と値のClear (5)  4の操作で空白となったセルに=上のセルという計算式の指示を出す (6) すべて値貼り付けをし、空白のセルを削除する ※Dataの行数は毎回作業時に変更があります。 ※Dataは数値だけではなく文字列も含んでいます 失敗したマクロ--------------------------------------------- Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=*[??????]*", Operator:=xlAnd Columns("B:B").Select Selection.ClearContents Selection.AutoFilter Field:=1, Criteria1:="<>*[??????]*", Operator:=xlAnd Columns("A:A").Select Selection.ClearContents For i = 3 To [A65536].End(xlUp).Row If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") Next i End Sub -----------------------------------------------------------

  • マクロについて

    マクロ初心者です。 下記の操作をマクロで行いたいのですがうまくいかないのでどうすればうまくマクロが作動するのか教えて頂ければと思います。4の操作までは正しく作動しましたが5以降に困っています。。。 どなたかお願いしますmm (1) A列にフィルターをかけて[??????}を含むものを選択 (2). 1に.該当するもB列のDataを値のみ数値と値のClear (3) 2の後に再びA列で[??????]を含まないものを選択 (4)  3に該当するA列のDataを数値と値のClear (5)  4の操作で空白となったセルに=上のセルという計算式の指示を出す (6) すべて値貼り付けをし、空白のセルを削除する ※Dataの行数は毎回作業時に変更があります。 ※Dataは数値だけではなく文字列も含んでいます 失敗したマクロ--------------------------------------------- Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=*[??????]*", Operator:=xlAnd Columns("B:B").Select Selection.ClearContents Selection.AutoFilter Field:=1, Criteria1:="<>*[??????]*", Operator:=xlAnd Columns("A:A").Select Selection.ClearContents For i = 3 To [A65536].End(xlUp).Row If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") Next i End Sub -----------------------------------------------------------

  • エクセルのマクロで複数のセルを連続して選択

     マクロ初心者です。添付画像の黄色いセルのように表の一部のセルを選択したいと思っています。画像には表れていないですが、選択する表が下に均等の間隔で100個程度あります。Range("G11:G12").Selectで一番上のセルを選択して下に11行いったところで選択し、その動作を100回くりかえすようなマクロを組みたいです。  どなたかご教授いただければ幸いです。

  • カット&ペーストのマクロ(エクセル)

    Sub test()  R = Selection.Row  C = Selection.Column   Range(Cells(R , C), Cells(R + 100, C)).Select   Selection.Cut   Cells(R + 1, C).Select   ActiveSheet.Paste End Sub 上記マクロは、アクティブセルから100行下までの範囲で"切り取り"を実行し、一行下のセルに"貼付け"を行います。 上記の処理を、複数のセルが選択されている時は、複数回カット&ペーストが行われるように変更したいのですが。 (選択されるセルは必ず同一列内の連番になります) (選択内で一番上のセルとその上のセルは連続したままになり、選択内で一番下のセルとその下のセルも同様になります) A1 a A2 b A3 c A4 d A5 e A6 f A7 g A8 h A9 i 上記でA3:A6を選択して実行すると、以下の結果になります。 A1 a A2 b A3 c A4 A5 d A6 A7 e A8  A9 f A10 g A11 h A12 i 最初のマクロをどのように変えればいいでしょうか?

  • エクセルマクロ 「101」 ボタンをおして 「102」となるマクロ?

    エクセルです。 一つのセル(A4)に「101」と書いてあります。それをVlookup関数で他のシートから一致する情報を取り出しています。次に同じセルに「102」とうつと、同じように一致する情報を取り出しています。 そこで、一回、一回、セルに102や103と打つのではなく、ボタンを押すと次の番号にうつるようなマクロを組みたいと思ってます。 ただ、101~130 次は、201~231みたいになってます。 一つのマクロでなくても良いので、よろしくお願いします。 最初は、 Range("A4").select  セルA4を選択 だと思うのですが、この次から分かりません。

  • エクセル VBAマクロ セルの単純移動

    基本的な質問ですが、よろしくお願いします。 エクセルのVBAで、Selectセルを1つだけ上下左右に移動させることを ”汎用的に書く”としたらどのようにすれば良いでしょうか? 例えば、Selectセルを一番上や、一番下、へというのであれば、 Selection.End(xlUp).Select Selection.End(xlDown).Select 一番右や、一番左なら、 Selection.End(xlToRight).Select Selection.End(xlToLeft).Select のように書いて、実行できます。 それでは、今いる所のすぐ隣りのセルへ移動させるということを 同じように表現するには、どのようにしたら良いでしょうか。 事の発端は、 マクロの自動記録を使って、セルを移動していっても、 Range("A1").Select Range("B1").Select Range("B2").Select Range("C2").Select Range("C3").Select : のように、絶対セル位置で記録されてしまうため、 同じような処理を順に隣りや後の行・列に向かって繰り返すような処理を 書こうとしたときに、汎用的には動いてくれないところからです。 参考になるページを自力では見つけられませんでした。よろしくお願いします。

  • エクセルマクロで教えてください

    エクセル2003です。 自動マクロで下記のようなマクロを造ったんですが Selection.End(xlDown).Select   Range("A29:D29").Select  ■A29を止まったセルの番号にしたいのです。(A**からD**まで)     With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("A30").Select ■A30を止まったセルの番号にしたいのです 以上2箇所の指定を教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルマクロ

    例えばA1セルに入力されている値を常にファイル名に して保存するということはマクロで可能でしょうか? A1セルの値は変化し、ファイル名は上書きしていくという かたちにしたいのですが。 という質問をさせて頂き回答も頂いて解決かと思ったのですが、回答していただいたマクロだと、A1セルの値がその前と同一の場合、ファイル削除のマクロが「パス名が無効です」というこでそれ以上動きません、たびたびすいませんが回答頂ければ幸いです

  • Excel VBA 初心者です。 作成中のマクロわからないところ

    VBA初心者です。もしセルA1の値がAでセルB1の値がGでセルC1の値にJを含むなら、 セルD1の値を変数i に入れる。 上記を10行目まで繰り返す。 というマクロを作りたいのですが、行き詰ってます。 よろしくお願いします。

専門家に質問してみよう