• ベストアンサー

枠の外と内の数字に分けて昇順に並べる方法

あけましておめでとうございます。 本年もよろしくお願いいたします。 このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、5列×5行の中に数字が1~31まであり、  重複数字を含んでおり、それが4つ(A,B,C,D)あります。  その中で、赤枠内と外の数字を分けて下段に  「〇外」、「〇内」として左から右へ昇順に並べます。  上記を実現する方法をVBAで実現する方法が知りたいです。   【注意事項】   ・5列×5行の中にある数字の並びは毎回異なります。   ・赤枠や、塗り潰しの青色や黄色は、説明のために付けているだけです。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

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

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

マクロでの方法です。PCによってはほんのちょっとだけ時間がかかるかもしれません。もっと早いほうがいいという場合はセルに毎回書き込まない方法にすると早くなると思います(最初のその方法でやってたのですがセル直接にした方が分かりやすいと思ってこちらの方法を選択しました) Sub Test() Dim mRng As Range Dim i As Long, j As Long, k As Long Dim mR As Long, mR2 As Long, mC As Long j = 0: k = 0: mC = 0: mR = 0: mR2 = 0 Application.ScreenUpdating = False For i = 1 To 4 mC = 0 For Each mRng In Range("A1:E5").Offset(j, k) If mRng.Row = 1 Or mRng.Row = 5 Or mRng.Row = 7 Or mRng.Row = 11 Or _ mRng.Column = 1 Or mRng.Column = 5 Or mRng.Column = 7 Or mRng.Column = 11 Then Range("B13").Offset(mR, mC).Value = mRng.Value mC = mC + 1 End If Next Range(Cells(13 + mR, 2), Cells(13 + mR, mC + 1)).Sort _ Key1:=Cells(13 + mR, "A"), Order1:=xlAscending, Orientation:=xlSortRows mC = 0 For Each mRng In Range("B2:D4").Offset(j, k) Range("B17").Offset(mR2, mC).Value = mRng.Value mC = mC + 1 Next Range(Cells(17 + mR2, 2), Cells(17 + mR2, mC + 1)).Sort _ Key1:=Cells(17 + mR2, "A"), Order1:=xlAscending, Orientation:=xlSortRows mR = mR + 1 mR2 = mR2 + 1 k = k + 6 If i = 2 Then j = j + 6 k = 0 End If Next Application.ScreenUpdating = True End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

回答No.2の 以下の部分は If mRng.Row = 1 Or mRng.Row = 5 Or mRng.Row = 7 Or mRng.Row = 11 Or _ mRng.Column = 1 Or mRng.Column = 5 Or mRng.Column = 7 Or mRng.Column = 11 Then Intersectは遅いとどこかで見たような気がしていたので避けていたのですがこれくらいだと差がないみたいなので 以下のようにした方が分かりやすいかもしれません If Intersect(mRng, Range("B2:D4").Offset(j, k)) Is Nothing Then

sazanami0422
質問者

お礼

いつもお世話になっております。 教えていただいVBAで問題なく動作すること確認できました。チューニングのIF分の方を採用して動作してます。また質問みかけたら回答いただけると助かります。

Powered by GRATICA
全文を見る
すると、全ての回答が全文表示されます。
  • chie65535
  • ベストアンサー率43% (8533/19397)
回答No.1

・A1:E5の5×5の表を、M1~AK1に横1列になるように「値をコピー」する ・S1~U1、X1~Z1、AC1~AE1のセルの値を編集して100を足す ・M8に「=SORT(M1:AK1,1,1,1)」という式を入れる ・M8~AK8を選択して「コピー」する ・そのまま「貼り付け」⇒「値を貼り付け」する ・B13に「=M8」と入力して、B13をコピーして、C13~Q13に貼り付け ・B17に「=AC8-100」と入力して、B17をコピーして、C17~J17に貼り付け ・同様に、G1~K5、A7~E11、G7~K11の5×5も処理する

sazanami0422
質問者

お礼

はじめまして。 VBAを使用しない場合の作成手順ありがとうございます。

Powered by GRATICA
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 枠の左と真ん中と右の数字を分けて昇順に並べる方法

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、7列×5行の中に数字が1~37まであり、  重複数字を含んでおり、それが4つ(A,B,C,D)あります。  その中で、1列~2列、3列~5列、6列~7列と数字を分けて下段に  「〇中」、「〇左」、「〇右」として左から右へ昇順に並べます。  上記を実現する方法をVBAで実現する方法が知りたいです。   【注意事項】   ・7列×5行の中にある数字の並びは毎回異なります。   ・枠線や塗り潰しの橙色や緑色や青色は、説明のために付けているだけです。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 複数行をまとめて縦に昇順に並び替える方法

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がお見えでしたら回答よろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  また私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、1行×25列の中に数字が1~31まであり、重複して入っています。 これが4行あります。  これをまとめて、縦に数字を昇順に並び替える方法をVBAで実現する方法が知りたいです。  (添付図はわかりやすくするためにセルに色をつけてますが、実際は無くてもOKです。   【注意事項】   ・1行×25列の中にある数字の並び毎回異なります。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 重複数字の数に応じてセルに色をつける。

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がお見えでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  また私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、1列×25行の中に数字が1~31まであり、  重複数字を含んで昇順に並んでおり、それが4列あります。  1列毎に数字を見て以下の条件にあえばセルを塗り潰します。   2個重複⇒セルを黄色に塗り潰す。   3個重複⇒セルを青色に塗り潰す。   4個重複⇒セルを緑色に塗り潰す。   5個重複⇒セルを赤色に塗り潰す。   上記を実現する方法をVBAで実現する方法が知りたいです。   【注意事項】   ・1列×25行の中にある数字の並びは毎回異なります。   ・1列×25行の中に重複数字が無い場合があります。(例:A列)   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 検索値で枠内を検索して一致したら黄色に塗潰す。

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、35列×6行の中に数字が1~37まであり、  重複数字を含んでおります。また、AL列とAM列は54行で、  数字が1~37まであり重複数字を含んでおります。  AL1とAM1の2つの値で、35列×6行の中を検索して一致したら  セルを黄色に塗り潰します。これを、AL列とAM列の  最終行(54行目)まで繰り返します。  上記を実現する方法をVBAで実現する方法が知りたいです。   【注意事項】   ・35列×6行の中にある数字の並びは毎回異なります。   ・枠線や塗り潰しの黄色、検索対象~、検索値~は説明の    ために付けているだけです。   ・AL列とAM列は2つで1つの値として昇順に並んでいます。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 連続する同じ数字のセルの塗り潰しがしたい。

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がお見えでしたら回答よろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  また私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、4行×25列の中に数字が1~31まであり、重複して入っています。  この中にある数字で、同じ数字が縦・右斜め・左斜め(横は無い)のいずれかに該当すれば  その数字のセルを黄色で塗り潰す方法をVBAで実現する方法が知りたいです。   【注意事項】   ・4行×25列の中にある数字の並びは毎回異なります。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 【再】連続する同じ数字のセルの塗り潰しがしたい。

    先程は、質問の添付図が添付されていなかたので再掲載します。 @@@@@@@@@@@@@@@@@@@@@ このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がお見えでしたら回答よろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  また私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】  添付図のとおり、4行×25列の中に数字が1~31まであり、重複して入っています。  この中にある数字で、同じ数字が縦・右斜め・左斜め(横は無い)のいずれかに該当すれば  その数字のセルを黄色で塗り潰す方法をVBAで実現する方法が知りたいです。   【注意事項】   ・4行×25列の中にある数字の並びは毎回異なります。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 同じ数字を2個使用している重複行の数字の出力方法2

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】 2019/12/20 22:51に質問No.9692415として 『同じ数字を2個使用している重複行の数字の出力方法』という質問をさせて頂き、 nishi6様から回答を頂きました。 動作としては添付図のとおり5列×20行の数字の中から、2個の数字が重複していたら黄色でセルを塗り潰し、重複する行に重複した行を、実際に重複した2個の数字をH列~AA列に書き出します。)この時の質問から発展して、『同じ数字を2個使用している重複行の数字の出力方法2』が今回の質問です。 具体的には下記2つです。 (1)重複数字1~重複数字10の2列×20行の数字をAB列・AC列に縦に並べた後、昇順に並び変えて重複数字を削除する。 (2)重複数字1~重複数字10の2列×20行の数字をAE列のみに縦に並べた後、  昇順に並び変えて重複数字を削除する。(又は、(1)で重複数字が削除された数字をAE列に1列に並べた後、昇順に並び変えて重複数字を削除する。) 以上、よろしくお願いします。

  • セルの数字を昇順に並び替えて重複削除する方法

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】  添付図のとおり、2列×20行の数字が【入力値2列】欄に入っています。  この数字を昇順に並び替えて重複数字を削除したものを【重複チェック済2列】に  出力します。また、【入力値2列】欄の数字を【入力値1列】に縦1列にして数字 を昇順に並び替えて重複数字を削除したものを【重複チェック済1列】に出力しま す。具体的には下記(1)~(4)の手順です。質問は2列×20行での場合ですが、  2列×200行の場合でも上記のことができるようにしたいです。    *********************************** (1)入力値2列(A列・B列)に2つの値をセットします。 (2)入力値2列(A列・B列)の値を重複チェック済2列(D列・E列)に並べて昇順に並び替えて重複数字を削除します。 (3)入力値2列(A列・B列)の値を入力値1列(G列)に1列にセットします。 (4)入力値1列(G列)の値を重複チェック済1列(I列)に並べて昇順に並び替えて重複数字を削除します。 以上、よろしくお願いします。

  • 重複の数によって塗潰しの色を変える方法

    このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】 添付図のとおり、A列とB列に数字が入っていて重複がありますが 昇順で並んでいます。それが100行あります。重複の数に応じて以下のとおりセルの塗潰しがしたいです。  A列&B列重複 ・・・2個なら”黄色”で塗潰し。  A列&B列重複 ・・・3個なら”青色”で塗潰し。  A列&B列重複 ・・・ 4個なら”緑色”で塗潰し。  A列&B列重複 ・・・ 5個なら”赤色”で塗潰し。 上記を実現する方法をVBAで実現する方法が知りたいです。   【注意事項】   ・A列、B列の数字は毎回異なります。   ・VBAで実現する方法~、と書きましたが、    同様のことが他の方法でも実現できればそれを教えて下さい。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

  • 3×3マスの数字を横一列に並べて同じ数字を塗潰す

    いつもお世話になっております。 どなたかご存知の方がお見えでしたら回答をいただけると助かります。 【質問】  添付図のとおりA1~K11の中に3×3マスが4つあります。  それぞれ「左上赤枠」、「右上赤枠」、「左下赤枠」、「右下赤枠」とします。  この中にある数字はバラバラで重複が有ります。  この4枠の数字を左から昇順にしてN2~V5に出力します。  その後、「左上赤枠」と「右上赤枠」、「左下赤枠」と「右下赤枠」を比べて  同じ数字があれば黄色に塗り潰す方法が知りたいです。 【注意事項】   ・A1~K11の中にある3×3の4つの枠の位置は常に固定です。   ・使用するエクセルは2016です。  ※左下赤枠と右下赤枠の19が塗り潰しできてないのはただのミスです。 以上、よろしくお願いします。

専門家に質問してみよう