VBA文字列の並び替えと昇順並び替えについて教えてください

このQ&Aのポイント
  • VBAを使って、A列の文字列をB列の数字の昇順に並び替える方法を教えてください。
  • また、特定の文字列がある場合にそのデータを先頭にもってくる方法も知りたいです。
  • B列で並び替えた後にif構文で切り取りを試みましたが上手くいきません。ご教授お願いします。
回答を見る
  • ベストアンサー

vba 文字列の並び替え

こんにちは! VBAにて以下の処理をしたいのですがどうやっても上手くいかず悩んでます。 A列には文字列B列には数字が入っています。 B列を昇順で並び替えし且つA列に指定した文字列がある場合先頭にデータを昇順で持ってくる。 ※B列で並び替えたあとにif構文で切り取り→挿入を試みたのですがどうしても昇順にならず 泣 どうかご教授下さい(ToT) 宜しくお願い致します。 A B EEEE 1 EEEE 2 RRRR 3 RRRR 4 FFFF 5 DDDD 6 上記の状態からRRRRを先頭に持っていき昇順で並び替えする。

  • Rupic
  • お礼率68% (13/19)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

マクロで行うなら,一番作業しやすい方法でマクロにやらせてしまうのがコツです。 作成例: sub macro1()  range("A:A").insert shift:=xlshifttoleft  range("A1:A" & range("B65536").end(xlup).row).formula = "=IF(B1=""RRRR"",1,2)"  range("A:C").sort key1:=range("A1"), order1:=xlascending, key2:=range("C1"), order2:=xlascending, header:=xlno  range("A:A").delete shift:=xlshifttoleft end sub

Rupic
質問者

お礼

無事解決できました! 作業列を作成して任意の文字列に1を振ることで先頭に持ってくるのですね! 凄く勉強になりました(о´∀`о) ありがとうございました!

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

作業列を使いましょう。 例えば、C列に =(A1="RRRR") の、様に入れておいて、C列降順、B列昇順の優先度で並び替えれば良いかと思います。

Rupic
質問者

お礼

無事解決できました。 ありがとうございました!

関連するQ&A

  • UNIXで文字列分割

    UNIXでマルチバイトの文字列で分割したいです。 例) aaaa bbbb cccc dddd eeee ffff ↓ [bbbb]で分割 [1]aaaa [2] cccc dddd eeee ffff できればawkで処理をしたいと考えています。

  • エクセルで教えて下さい。

    エクセルで教えて下さい。 オートフィルタ、ピボットテーブル以外で関数などで教えて下さい。 A列に大量の文字列があり重複したりしてます。 そこで、 B列にはA列にある大量の文字列を重複なしで表示させたいと思ってます。 例えば A列 B列 AAAA AAAA BBBB BBBB AAAA CCCC CCCC DDDD DDDD EEEE DDDD FFFF EEEE FFFF EEEE AAAA みたいな感じです。A列は編集可能でQQQQを追加すれば自動でB列にも表示させたいです。 このようなことを簡単にできますでしょうか? 宜しくお願いします。

  • VBAの文字列分割

    A1セルにAAA VVV EEE TTT YYYYY UUUUUU WW RRRR WW TTTT という文字列が入力されています。 VBAによって、B1セルから順序右へ空白ごとに分割した文字列を代入することができますか? できれば、空白の数に制限なくできるものを所望しています。 もし不可能であれば最低でも10個までのものだと助かります

  • ファイルの比較

    こんにちは UNIX上で2つのファイル a , bとあった場合 その2つのファイルに同じ文字列があるかどうか検索したい場合、どのようなコマンドを使えばいいのか教えてください。 たとえば、 aのファイルに aaaa bbbb cccc dddd bのファイルに ffff aaaa gggg rrrr とあったら aaaa という文字列がなんらかで検出できればいいのですが・・・

  • VBScript(vbs)での行の取得について

    あるテキストの中に空行をはさんで文字列がある時に"ABCD"の文字列を含む場合はABCDを含むひとまとまりだけを取得したいのですがその方法について教えてください。 [テキスト] AAAA BBBB CCCC DDDD EEEE ABCD FFFF GGGG HHHH [取得したい部分] DDDD EEEE ABCD FFFF

  • VBAの並び替えについて

    VBAでリストを作成したあと B列 昇順 C列 昇順 D列 ユーザー設定リスト という順番で並び替えるにはどうしたらよいでしょうか?

  • エクセルVBAでの並び替えについて

    エクセルでデータの並び替えの方法が分からなくて質問します。たとえばBの列の100~999、A100~A999、B100~B999のようなデータが縦に入っているものとします。この中には150-1、150-2のようなデータも混ざってます。これをそのままエクセルで並び替えをしても100~999までは上手にできるのですがその後に150-1とかきてA100~が始まります。例えばこのデータを100~始まり149、150-1,150-2、152,153、154のように上桁から基準に並び替えを行いたいのですがいい方法はありませんか?現在はマクロを使ってVBAでSORTの引数を触ったりしたのですが上手にいきません。基本的にVBAで行っているのでVBAでお願いします。初心者なのでよろしくお願いします。

  • エクセルの並び替えについての質問です。

    エクセルの並び替えですが、例えば列の並び替えで2列(仮にA列・B列)に数値は入れてあり、A列を基準に昇順する場合2003ではその並べ替えをしたい範囲を指定して、「データ」→「並べ替え」→範囲の先頭行をデータにチェックを入れて、最優先されるキーを列Aにして、昇順にチェックを入を入れれば、A列基準で並び替えが完了しましたが、2007ではではその並べ替えをしたい範囲を指定して、「並べ替え」→最優先されるキーを選択すると列A・列Bの選択ではなく、A・B列の1行目の数値の選択となり、それで並び替えると1行目はそのままで、2行目からの並び替えになってしまいます。また1行目を数値のない空欄セルにしておいて1行目から上記作業をすれば、優先されるキーは列A・列Bの選択肢が出ますが、もしその表が1行目が空欄で無い場合はどうするのでしょう?また、2003では並び替えの作業を『繰り返し』で別の表も同じく並び替えの作業が出来ますが、2007では上記の1行目空欄セルにしておいてから並び替えをして『繰り返し』の作業は出来ません。 どの様にすれば、『繰り返し』の作業も出来るのでしょうか?

  • 並び替えがしたいのですが。。。

    Excel2000を使用しています。 文字列として入力している地番を、数値の昇順に並び替えをしたいのです。どうしたらいいのでしょうか? 地番を文字列としているのは、一つのセルに地番を"-"で区切って入力しています。地番の入力例としては、1-1,10-1,20-1です。そのセルを数値として入力出来ればいいのですが、"1-1"を例にすると1月1日になってしまうので、文字列として入力しています。文字列のセルを昇順に並び替えをすると、1→10→100→2→20…となってしまいます。数値の昇順(1→2→10→20→100)にするには、どうしたらいいでしょうか? 関数を使って"-"の前と後で抜き取り、並び替えすることも考えたのですが、優先キーが3つまでなので困ってます。大字・小字・地番で並び替えしたいのです。 出来れば、件数が3000~5000件程ありますので、そのまま文字列セルの状態で昇順になると嬉しいです。 よろしくお願いします。

  • C言語:文字列の並び替え

    3つの文字列を入力して、昇順に並び替えを行う方法教えて下さい。 例えば、 AKIRA AKIKO AIKOSANN と、入力されたら、 AIKOSANN AKIKO AKIRA   となるようにアルファベットが早い順に並びかえを行いたいのです。 わかる方、助けてください!

専門家に質問してみよう