質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.98%

  • Visual Studio

    1498questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VBA

    1423questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1226questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • VB.NET

    810questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    276questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Excelマクロで並び替え

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 338

techno

score 10

前提・実現したいこと

Excelの数値等をマクロで並び替えがしたいのですがその方法が分かりません
中身を任意の事で並び替えるのではなく

ただ単に左の表のデータ
上から下へ並んでいる物を

下から上へ並び替えて移したいだけです
(今はテストなのですが本番はいくつ行があるかわかりません、その時々で変わります)

イメージ説明

試したこと

いろいろ調べたのですが中身の数値等を入れ替えるマクロが多く
純粋にこういったものの例題が見つけることができなかったので
質問させていただきました(検索の仕方が悪かったかもしれません)

何卒、ご教授願えないでしょうか。
よろしくお願い致します

補足情報

結果に左側の「テスト」の列は要りません
元々の数値をそのままにしておいて
「B列の名前」と「C列の数値」結果だけを別の列に移し表示たいです
(グラフ通り)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

※「テスト」列が1から始まる順序番号 という前提ですが、

(1)ABC列をDEF列にコピー。
(2)DEF列を選択範囲にして、D列を降順ソート
(3)D列をクリア

で、これをマクロにしたければ、全体をマクロ記録。
というのじゃダメですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 16:18

    h.horikoshiさん
    お返事ありがとうございます

    マクロ記録!!盲点でした。
    試してみましたが中身でソートされてできませんでした。

    キャンセル

check解決した方法

0

色々調べてみて

隣の列に連番を打ち逆順にソートというので解決出来ました

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 17:08

    自己解決されたようですが、(テスト列のような)連番の列を用意し、逆順(降順)でソートしたわけですよね。
    それだけ聞くとh.horikoshiさんのアドバイス通りのように聞こえますが(^_^;

    なお、マクロの記録でコードを自動作成された場合、例えばRange("B2:C10")のように固定範囲指定の記述になっていると思います。
    「本番では対象範囲が可変」とのことですので、データが入力されている最終行までを範囲とする必要がありそうです。

    最終データ行は`Cells(Rows.Count, "B").End(xlUp).Row`というコードで取得することができます。

    解説すると、`Rows.Count`はそのExcelのバージョンで使用可能な最大の行番号を返すので、`Cells(Rows.Count, "B")`はB列の最終行のセルという意味です。
    続く`.End(xlUp)`は、そのセルから[Ctrl+↑]操作をした時のセルを指します。
    B列最終行のセルから[Ctrl+↑]の操作をすると、B列を下から順に探していって最初にデータが入力されているセル(つまりB列で一番最後にデータ入力されているセル)に移動します。
    最後の`.Row`でそのセルの行番号が取得されるので、`Cells(Rows.Count, "B").End(xlUp).Row`は`B列で最後にデータが入力されている行番号`となるわけです。

    セル範囲を指定するにはRangeを利用しますが、これにはいくつか記述方法が用意されています。
    `Range("B2:C10")`のように固定範囲を直接指定することもできますが、`Range(Cells(2, "B"), Cells(10, "C"))`のように始点セルと終点セルを指定することもできます。

    これらを組み合わせるとコピー元やソートの範囲を自動的に可変させることができるようになります。
    ```
    Dim lLastRow As Long
    Dim rngCopy As Range
    Dim rngSort As Range

    'B列の最終データ行を取得
    lLastRow = Cells(Rows.Count, "B").End(xlUp).Row
    'B2~C列の最終データ行までをコピー元用の範囲として取得
    Set rngCopy = Range(Cells(2, "B"), Cells(lLastRow, "C"))
    'E2~F列の最終データ行までをソート用の範囲として取得
    Set rngSort = Range(Cells(2, "E"), Cells(lLastRow, "F"))
    ```

    コメントでの長文失礼しました。
    参考になれば幸いです。

    キャンセル

  • 2017/11/07 17:39

    jawaさん
    お返事ありがとうございます
    いえいえお返事して頂けるのに長文も、短文も関係ないと思います


    凄く丁寧なご説明心より感謝いたします
    細かく解説して頂き凄く凄く勉強になりました
    ありがとうございます

    私、VBAやVisual Studio 等でやっと変数の使い方を覚えた程度でして今回のプログラムも変数等々を使って記述するのは分かるのですが記述するにあたり必要な単語?記述等々が分からずこの場で質問した次第です。


    もう少し勉強してjawaさんから教えて頂いた
    プログラムを試してみたいと思います
    ありがとうございます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    SUMIF 範囲指定での合算

    SUMIFで合計範囲を以下のように指定した時、 B2:C10 B列の値しか合算されず、これはSUMIFの仕様でしょうか? なんとかC列も合算させたいのですが、良い関数はあり

  • 解決済

    【EXCEL VBA】セルの文字列の一部文字色を変更したいが変わらない

    Excelで文字列比較を行い、一致した文字のみ色づけするマクロを作成していますが、下記のマクロを実行するとすべての文字が色づけされてしまいます。 C列:比較ベース文字 I列

  • 解決済

    Excel 文字に値を設定

    ExcelでもJavaのようにA=5、B=2を設定しA+B=7のように計算できないのでしょうか?例えば この様な計算です。 方法があればご教示願います。

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 解決済

    excel2016 if文でのラベル付け

    お世話になっております。 excelのif文を使って↓のようなデータがあるものを ↓のようなd列のような状態にしたいです。(d1には1がもとから入っています。) 下記のをや

  • 解決済

    Excelで特定のセルに数字とカンマ以外の文字が入らないように制限したい

    いつも大変お世話になっております。 Excelバージョン Excel2016 表題の通り、Excelの特定のセルに数字とカンマ以外が入らないように制限をしたいのですが、 E

  • 解決済

    excelのデータ抽出が、思うように出来ずに苦慮しています!

    excelのデータ抽出が、思うように出来ずに苦慮しています! race_date horse_name season 2011/11/17 □地オノユウ

  • 受付中

    エクセル関数で数字のみを塊で抜き出したい

    前提・実現したいこと A列:数字(半角・全角を含む1文字以上)+文字列(漢字・半角全角英字等)から ※想定パターン(A1~A3セルの3パターン) B列:A列右から最初の数字(半角・

同じタグがついた質問を見る

  • Visual Studio

    1498questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VBA

    1423questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1226questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • VB.NET

    810questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    276questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。