複数の各レコードごとを上下入れ替える方法は?

このQ&Aのポイント
  • A列の下6桁を除く数字は必ず1~10です。A列を優先キーにして、複数の各レコードごとを希望順に入れ替えたい方法を教えてください。
  • エリア1と表現される4******だけのレコードを連続して配置し、エリアの数と順序が変動する場合の実行方法も教えてください。
  • 例えば、エリア順が4、2、10の場合、エリアの順序を10、4、2に入れ替える方法や、他の順序に変える方法を教えてください。
回答を見る
  • ベストアンサー

「 複数の各レコードごと 」 を、上下入れ替えるには ?

A列 の 下6桁 を除く数字は、 必ず、 1 ~ 10 です。 その 「 A列を優先キー 」 にて、「 複数の各レコードごと 」 を、 希望順 に入れ替えたいんです。 たとえば 「 4****** だけのレコード全部 ( 連続してます ) 」 を 「 エリア1 」 と 表現させて頂ます。  * 部分は、 必ず 6 桁 です。 左隅の数字 は 1 ~ 10 まで変動します。 このエリアの数は、 2 ~ 3 まで変動します。 このエリアの順序は、   「 エリアの数が2 」 の場合は、2通り、 になります。   「 エリアの数が3 」 の場合は、6通り、 になります。   マクロも、同様に、それぞれ、2通り、6通り、が必要かと思っておりますが、  私の頭が混乱してしまうので、まず下記例をどうかご教授下さいませ。 下記例の、 「 各エリア の 左隅の数字 」 を、それぞれ 「 1、2、3 」 に置換えたりすれば、なんとかなるのかなと勝手に思ったりしています。 ------------------------------------------------   下記例は、左隅の数字 4、 2、 10  の場合です ( 実行後が全部で5通りになります )。 実行前 ( エリア順が 4、2、10 です ) A列 4****** ・ ・ 4****** 2****** ・ ・ 2****** 10****** ・ 10****** ↓↓↓ 実行後1 ( エリア順を 10、4、2 にさせたい ) A列 10****** ・ 10****** 4****** ・ ・ 4****** 2****** ・ ・ 2****** ------- 実行後2 ( エリア順を 10、2、4 にさせたい ) ------- 実行後3 ( エリア順を 4、10、2 にさせたい ) ------- 実行後4 ( エリア順を 2、10、4 にさせたい ) ------- 実行後5 ( エリア順を 2、4、10 にさせたい ) ------- 実行後6 ( エリア順を 4、2、10 にさせたい ) ← これは 実行前と同じエリア順。

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

  • ベストアンサー
  • Nii
  • ベストアンサー率48% (79/162)
回答No.1

あってるかどうかはわかりませんが A列には、7桁か8桁の数字が入っている。 8桁の場合は、頭の2桁は、10になっている。 と条件を仮定させて頂きます。 エリアの順番は、別セルへ設定します。 D列には、1から10を入力しておきます。 E列へ、1から10までの並び替え順のエリアを設定します。 B列には、=INT(AXX/1000000)を入力し、頭の二桁を抽出します。 C列には、B列を元に、D列を検索し、対応する値をE列より求めます。 =LOOKUP(BXX,$D$1:$D$10,$E$1:$E$10) で、C列を並び替えるというのではどうでしょうか?

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございました。 遅くなり申し訳ございませんでした。 未熟なりに、いろいろ試行錯誤しておりました。 A列の最終行以降が 空白 であっても、完了できました。 すごいですね。

関連するQ&A

  • 「 複数の各レコードごと 」 を、希望順に並び替えるマクロは ?

    以前に似た質問をさせて頂きました時は、マクロ以外のご回答を頂きましたので、 今回は、「 マクロの回答 」 をお願いしたいと投稿いたしました。 何卒、ご教授くださいませ。 A列 の 下6桁 を除く数字は、 必ず、 1 ~ 10 です。 その 「 A列を優先キー 」 にて、「 複数の各レコードごと 」 を、 希望順 に入れ替えたいんです。 たとえば 「 4****** だけのレコード全部 ( 連続してます ) 」 を 「 エリア1 」 と 表現させて頂ます。  * 部分は、 必ず 6 桁 です。 左隅の数字 は 1 ~ 10 までだけ変動します。 このエリアの数は、 2 ~ 3 まで変動します。 ------------------------------------------------   下記例は、エリアの数が 3つ で、     左隅の数字 4、 2、 10  の場合です。 実行前 ( エリア順が 4、2、10 です ) A列 4****** ・ ・ 4****** 2****** ・ ・ 2****** 10****** ・ 10****** ↓↓↓ 実行後1 ( エリア順を 10、4、2 にさせたい。 実際には、エリア順は全部で5通りになります。 ) A列 10****** ・ 10****** 4****** ・ ・ 4****** 2****** ・ ・ 2******

  • A列の下2桁だけが連番でなかったら1行だけを挿入するマクロは?

    基本は、A列の下2桁 ( 各連番が複数ずつあります ) だけが連番になっているんですが、 "たまに"  抜けている ( ない ) 時がありますので、 マクロ実行後に、連番が抜けている ( ない ) 場合に、そこに 「 1行だけ を挿入 」 して、 かつ その行のFS列 ( 175列目 ) まで  ハイフン 「 - 」  を入力したいんです。 そして、必ずデータエリア数を   12  or  24  or   36   にしたいんです ( マクロ実行前は 36 を超えることはありません )。   連番が抜けている ( ない ) 場合、多くても 4・5つのデータエリア です。 3通り のマクロが必要のように思いますが、下記例の 1通り をどうかご教授下さいませ。 ---------------------------- **01 が 約10~19行 ( 変動します ) まであります ( これを エリア数1 と表現させて頂きます )。 そして、他の 「 **02 ~ **12 」 も同様です。これで 合計エリア数12 となります。 「 **01 ~ **12 」 は、必ず昇順になっています。 下記例は、 エリア数を 実行後 24 にしたい場合の例です ( この場合、実行前は 24 を越えることはありません )。 「 最初の **01 ~ **12 」 のうち 「 **02 」 と 「 **12 」 が抜けている ( ない ) 場合です。  実行前 ( エリア数22 です。「 **02 」 と 「 **12 」 が抜けている ( ない ) ) A列 **01 ・ **01 **03 ・ **03 ・ **11 ・ **11 **01 ・ **01 **02 ・ **12 **12 ↓↓↓ 実行後 ( 挿入した2行を エリア数2 としまして、 合計エリア数24 となります ) A列   B列   ・   ・   FS列  **01 ・ **01 -      -    ・   ・   - **03 ・ **03 ・ **11 ・ **11 -      -    ・   ・   - **01 ・ **01 **02 ・ **12 **12

  • 「 複数ワークシートごと 」 を、希望順に 「 別ブック 」 へ貼り付けるマクロは ?

    エクセル 2002 です。 シートの数は、必ず 36 以下です。 下記例は、 1、「 頭の AK 」 は 必ず、 全部同じです。 2、「 数字部分の2桁 」 は、 必ず、  01 ~ 10 です。 3、「 * 」 は、 必ず、 6 桁 です。 4、たとえば下記例の 「 AK01****** 」 は、   「 AK01******  だけの見出し全部 ( AK01 だけが全く同じのデータが必ず続いてます) 」     を    「 01 の エリア  」 と 表現させて頂ます。    5、この エリア は 必ず、2つ か 3つ です。( 下記例では、エリア は 3つ です) この エリア順 を 希望順に、 「 別ブック2 」 へ貼り付けたいのです。 何卒、ご教授くださいませ。 ---例---------------------------------------------- ブック1 ( エリア順が 01、04、10 です ) シート見出し AK01****** ・・ AK01****** AK04****** ・・ AK04****** AK10****** ・・ AK10****** 別ブック2 ( エリア順を 10、04、01 にしたいです ) シート見出し AK10****** ・・ AK10****** AK04****** ・・ AK04****** AK01****** ・・ AK01******

  • 「ワークシート見出しの順番」 を希望順に並び替えるマクロは ?

    エクセル 2002 です。 シートの数は、必ず 36 以下です。 下記例は、 1、「 頭の AK 」 は 必ず、全部同じです。 2、「 数字部分の2桁 」 は、必ず、 1 ~ 10 です。 3、「 * 」 は、必ず、6 桁 です。 4、たとえば下記例の 「 AK01****** 」 は、 「 AK01******  だけの見出し全部 ( 01 だけが全く同じのデータが必ず続いてます) 」 を 「 01 の エリア  」 と 表現させて頂ます。    5、この エリア は 必ず、2つ か 3つ です。( 下記例では、エリア は 3つ です) この エリア順 を 「 InputBox を使い 」 希望順に並び替えたいのです。 何卒、ご教授くださいませ。 ----------------- Sub 見出し並び替え() Dim sort_key As String Dim sDataArray As Variant Dim i As Long Dim j As Long sort_key = InputBox("ソートキーを入力してください" & vbCrLf & "10,04,01 のような感じで入力してください") ・ ・ End Sub ---例---------------------------------------------- ブック1( エリア順が 01、04、10 です ) シート見出し AK01****** AK01****** ・・ AK01****** AK04****** ・・ AK04****** AK10****** ・・ AK10****** ブック1( エリア順を 10、04、01 にしたいです ) シート見出し AK10****** AK10****** ・・ AK10****** AK04****** ・・ AK04****** AK01****** ・・ AK01******

  • Excel 複数の条件ごとに合計したい

    度々失礼します。 難しくてどうしてもできません。 ↓やりたい事は4つあります↓      A    B    C  1    4121   5   105% 2    8502   23   98% 3    7005   3   200% 4    3425   11 80% 5    8536   28 150% 6    7765   30 112% 7    4663   2 88% 8    3987   19 79% ※A列の数字は必ず4桁 ※C列は%で表示されている その1 A列の4桁の数字の千の位(一番左の数字)をキーにしてB列の数字を引き抜いたものを合計して出したい。 【例】A列の数字の頭が「4」のB列の数字を足したい。 この場合、A1(4121)とA7(4663)が「4」始まりなので、その右側B列のB1とB7を足した数を関数で出したい。 その2 その1の応用で 【例】A列の数字の頭が「4」のものと「7」もののB列の数字を足したい。 この場合「4」始まりはA1(4121)とA7(4663)、「7」始まりはA3(7005)とA6(7765)なので、合計がB1+B7+B3+B6となるように関数で出したい。 その3 その1の応用で A列の4桁の数字の千の位(一番左の数字)をキーにしてC列の数字を引き抜いたものを平均して出したい。 【例】A列の数字の頭が「4」のもののB列の数字の平均を%で出したい。 この場合、A1(4121)とA7(4663)が「4」始まりなので、 C列のC1とC7の平均の数字を出したい(%で) その4 その2とその3の応用で A列の数字の頭が「4」のものと「7」もののB列の数字を平均した数字を%で出したい。 この場合「4」始まりはA1(4121)とA7(4663)、「7」始まりはA3(7005)とA6(7765)なので、C1・C7・C3・C6の平均の数字を出したい(%で) 何回か段階を踏んで・・・ではなく、このような式を入れれば一気にに答えが反映される関数式が可能であれば教えてください。 何卒よろしくお願いします!

  • ファイルメーカーで1レコードを複数レコードに分割する方法

    http://oshiete.nikkeibp.co.jp/qa2025256.html 基本的な質問内容としては↑と同じかと思います。 重複して申し訳ございません。 aisaikaさんはfilemakerでスクリプトを組まれて解決されたようですが、 filemaker初心者のため、どういうスクリプトを組めばこれを解決できるのかを、 具体的にお教えいただけないでしょうか。 私のやりたい内容としては下記の通りです。 [例] ↓全部で1レコードのところを、A水200gを1レコード、A砂糖1gを1レコード  といったように、1行を1レコードに分割したいのです。。。 相 材料   量 A  水   200g A  砂糖  1g A  塩   0.5g B  しょうが 2g B  にんにく 2g B  ひき肉  100g どなたかご存知の方がいらっしゃいましたら、よろしくお願いいたします><

  • 数学Aの応用問題についてです

    以下の四問について、考え方がよく分かりません。 参考書などと照らし合わせたのですが、答えまでたどり着く事が出来ませんでした。もし分かる方がいたらよろしくお願いします。 (1)5人に招待状を送るため、宛名を書いた招待状と、それを入れる宛名を書いた封筒を作成した。招待状を全部間違った封筒に入れる方法は何通りあるか。 答えは44通りです。 (2)6つの文字a~fを横一列に並べる時、a,b,cの3つが隣り合う並べ方は何通りあるか。また、a,bが隣り合わない並べ方は何通りあるか。 答えは順に144通り、480通りです。 (3)1から12までの数が書かれた12枚のカードがあり、ここから、カードを戻さずに3枚のカードを取り出し、取り出した順に左から数を並べ、数を作るとする。例えば、12,3,5と取り出すと1235という4桁の数が出来る。 (1)6桁の数を作る取り出し方は、何通りあるか。(答…6通り) (2)4桁の数を作る取り出し方は、何通りあるか。(答…648通り) (3)4桁の数で、1221のように左右対称になる数を作る取り出し方は何通りあるか。(答…2通り)] (4)1から12までの数字が、それぞれ1つずつ書かれた12舞のカードがある。この中から3枚のカードを同時に選ぶとき、最小の数字が5であるような選び方の総数は何通りあるか。 以上です。よろしくお願いします。

  • エクセルに詳しいかた、教えてください。

    エクセルに詳しい方、教えてください。 お聞きしたいことが2点あります。 ○知りたいこと1 数字が下記の通り、A列はランダムに、B列は数字が1ずつ増加するように並んでおり、C列は空欄です。    A B C 1  5 1 2  3 2 3  1 3 ・A列の数字のうち、もっとも小さい数字の右(B列)の数字を ・C1に表示されるような関数 を、組みたいのですが、どのようにすればよいのでしょうか? ちなみにA列の数字は0を含む整数です。 ○知り合いこと2 (前提は知りたいこと1からの続き) A列の中には同じ数字が発生する可能性がある状況です。 この場合、以前違う関数ではPCが優先順位付けができないためか、 C列に、A列に対応するB列の数を、取得しようとしても、#N/Aという表示が出てしまうようでした。 そこで可能ならば、優先順位づけをインプットさせたいのですが、 ・指定したセル内の一桁の数字に、1を足した数が一番優先順位が高く、 ・以降2を足した数、3を足した数・・・といったように順に優先順位が高くなる ・1を足した後の数が9まできたら、0に戻る このようなことを考慮したうえで、C列に数字を表示させることは可能でしょうか? 知りたいこと1だけでも、1・2を合わせたものでも、ご存知のかたがいらっしゃいましたらご教示いただけますと幸いです。

  • エクセルでの数字の抽出方法

    A列に数字3桁、4桁の数字が入っています。 各月毎で、頭1桁ごとの集計をとらなければなりません。 どうしたらいいのでしょうか? (例) A列     B列 107     2001/1 110     2001/10 307     2001/1 514     2001/2 601     2001/1 408     2001/5 104     2001/1 107     2001/5 605     2001/1 504     2001/2 「2001/1」の「1XX」が 2件 「2001/1」の「6XX」が 2件 というふうにしなければなりません。 どのような数式を使えばよいでしょうか。 データ数は30000件近くあります。 宜しくお願いいたします。

  • エクセルで数字の下1桁を見て並び替える

    エクセルで下記の様な数字が並んでいます。 A列の下1桁の数字は上から順に増えていて、ある数字で1に戻りまた増えています。 その数字は毎回同じではなく、6までの場合もあれば10までの場合もあります。 下記の例では上から6行、次は4行、次は7行と下1桁の数字によってグループ分け出来ますよね? それで上から6行目までのB列の値(462~530)をコピーしてSheet2のA1から横方向に並べます。 その次は7行目から10行目までのB列の値(356~487)をコピーしてSheet2のA2から横方向に並べます。 その次も同じように並べます。 B列が空欄の場合もありますが、その場合はそのままSheet2にも空欄のセルを作ります。 1グループ全部のB列が空欄でもそのままSheet2に空欄の行を作ります。 この動作をマクロで出来る式を教えて頂けないでしょうか? A列          B列 0213240101     462 0213240102    387 0213240103    556 0213240104    585 0213240105    536 0213240106    530 0213240201    356 0213240202    632 0213240203    486 0213240204    487 0213240301    586 0213240302    670 0213240303    619 0213240304 0213240305    645 0213240306    487 0213240307    651 0213240401 0213240402 0213240403 0213240501    455 0213240502    623 0213240503    411 Sheet2 A列   B列    C列   D列    E列    F列   G列 462    387    556    585    536    530 356    632    486    487 586    670    619            645    487    651    455    623    411

専門家に質問してみよう