• ベストアンサー

列の同文字を続けて下行へ移動

表-1A列に同文字"あ"があれば続けてその行を下行へ移動したいのですが表-2のようにA列に"あ"でまとめた行、次に"い"でまとめた行に入れ替えたいのですがVBAコードをお教え願います。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1624/2464)
回答No.2

No1です。とりあえず参考までに(最低限の指定) 2007より前のバージョンで実行する可能性がある場合は以下のコードで(2016は不明) With Sheets("Sheet1") '↓もしくは.Range("A3:C11").Sort .Range("A3").Sort _ Key1:=.Range("A3"), Order1:=xlAscending, _ Key2:=.Range("B3"), Order2:=xlAscending, _ Key3:=.Range("C3"), Order3:=xlAscending, _ Header:=xlNo End With 2007以降だとこちらでも(2016は不明) With Sheets("Sheet1").Sort.SortFields .Clear .Add Key:=Range("A3"), Order:=xlAscending .Add Key:=Range("B3"), Order:=xlAscending .Add Key:=Range("C3"), Order:=xlAscending End With With Sheets("Sheet1").Sort .SetRange Range("A3:C11") .Header = xlNo .Apply End With なお、最終行が不特定な場合は(A列の最終行を求める場合) Dim MyLastRow As Long MyLastRow = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row 上記を最初に追加して .SetRange Range("A3:C11") を .SetRange Range(Cells(3, "A"), Cells(MyLastRow, "C")) に変更してください。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1624/2464)
回答No.1

マクロの記録で並び替えを実行したものを記録するとコードができますよ。キーはA列B列C列の順にすると表ー2の状態になります。 定型的な処理はマクロの記録でコードができますので、そちらの方が実際のブックの状態でのコードになるので手直しも少なくて済むと思います。

関連するQ&A

  • A列の同文字終了で1行挿入後同文字行の合計値入力

    Excel2013ですが表-1のA列同文字が終了したら同シートの表ー2のように1行挿入しD列に"合計"という文字、E,F列にA列の同文字に対しそれぞれに合計値を入れたいのですがVBAコードが解る方よろしくお願いします。

  • ExcelでEnterを押したあとの移動先について

    A5:H(仮に)500の表があります。 現在、(例)A6→B6→C…と横方向に入力し、H6を入力したあとEnterの押打でA7にもどり、次行のA7→B7→C…の順に入力しています。 もどる操作はAlt+F11で貼り付けた下記のVBAがやっています。 これまでは、表A5:H500の空行(データが入ってない最下行)をアクティブにしたあと、例の順にデータを入れていくだけだったのですが、形式を変えたため入力箇所が増え、A2とA3を入力してから空行に入力する手順になりました。 希望は、A3を入力してEnterを押打したあと、次に入力するセル=表の最下行のA列のセルに移動していたいのですが、それにはどうのようなVBAがよいのでしょうか。 (以下は、考えるヒントになればと思い書き加えます。) この表はVLOOKUPで使われるデータが入っており、A5以下のA列はひとつだけ"あ"が入り、残りは空欄です。 検索値は都合で"あ"という文字にしました。 1行(1レコード)入力して印刷、また1行入力して印刷、また…の繰りかえしで、たいてい入力済みの最下行のA列が"あ"になっています。 この"あ"が新規で入れる行(データが入ってない最下行)のひとつ前にあることが多いので、A3を入力してEnterを押打したら"あ"の下に移動することを希望しますが、無理なら"あ"に移動したあと手動の矢印キーで↓を押しますので、よいお知恵をよろしくお願いします。 (下記の「H列からA列にもどるVBA」もこのサイト内を検索して見つけてきたものです。) ------‐H列からA列にもどるVBA------‐ Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 9 Then Cells(Target.Row + 1, 1).Select End If End Sub

  • セル内文字を切り取りその列の空白セルに貼付け

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいのですが行数が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • 特定の列に特定の文字があるとき

    VBAについてです。 たとえば、エクセルのA列に「あいうえお」という文字があったとき その行を削除したいという場合 素人ながらVBAを真似てみたら、A列以外のところに「あいうえお」が 入っている行も削除されてしまいました。 あくまでA列にその文字があったときにだけ削除したいのですが どのようにしたらいいのでしょうか。 InputBoxを使っていたら、どの列に文字が入っていても 削除されてしまい困っています。

  • 最下行にある数値または文字列を返す数式で困っています

       A   B 1  10   (=" ") 2  ×   (=" ") 3  17   (=" ") 4  28 5  × 6  (=B1) 7  (=B2) 8  (=B3) のように、A列に数値や文字列が入力されています。 A6以降は他のセルに入力されたものがこれから入力されます。 (A6以降は、見た目は空欄です) A列で数値であろうと文字列であろうと、とにかく見た目の最下行のセル に入力されている数値または文字列を返すにはどういう数式を使えば良いでしょうか? (上の例では、A5の×を返したいのです) =INDEX(A:A, MAX( IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)), IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))) では、A8(見た目は空欄)が返ってきてしまいますし、 =LOOKUP(10^5,I:I) では、A4の28が返ってきてしまいます。 どなたかご教授ください。 よろしくお願いします。

  • 複数行の最下行の範囲選択

    こんにちは、マクロ初心者です。    A  B  C  D  E  F  G  H  I 1  あ  あ  あ        あ  あ     あ 2  あ  あ  あ        あ  あ     あ 3  あ     あ                 あ 4        あ                 あ 5        あ                 あ 6        あ                 あ 7        あ                 あ 8        あ                 あ 9        あ 10 上記のような表があるとき セル"A"列から"I"列までの最下行にあたる行を検索し、 更に最下行までの範囲をコピーして、別シートにコピーさせたいのです。 (上記の例だと、セル"A1"~"I9"の範囲をコピーする) Range("A1", Range("I1").End(xlDown)).Select Selection.Offset(0, 0).Select 上記のコードでできると思ったのですが、なぜか不必要な範囲まで選択されてしまいます。 (下方向に数行余計に選択されてしまう) これではダメなのでしょうか? ちなみに、数式などは入っておらず、入力されていないセルは全て空白です。 A列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。

  • 同じ文字列は行を合わせたい

    A列からB列に文字列があります。(日によって記入されている列は変動します。) A,B,C列それぞれの2行目から記入されている文字列を 同じ文字列は同じ行にし、それ以外の文字列はその他の行にしたいのですが どのようにすればよろしいでしょうか? エクセル2010で関数または、VBAで方法がございましたら、ご教示ください。 よろしくお願いします。

  • セル内文字を切取りその行範囲の列の空白セルに貼付

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいです。また等間隔の名前の行がある中で枠内の空白に文字を張付けたく等間隔行数枠が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • セル値が指定行のセル値とマッチしたら先頭列へ移動

    エクセルを開いたらA1セルの値が5だったら2行目のA1セル値とマッチしたG2 5の値の列が先頭列へ移動するようにしたいのですがVBAコードが解る方宜しくお願いします。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!