アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで下記のようなデーターがあるとします。

1 A  G  
  B  H
2 C  I  ○
  D  J
3 E  K
  F  L
このようにひとつの項目に2行づつあるものに対して、最後に○をつけたものを先頭に2行そのまま一気に並び替えるにはどのようにすればよろしいでしょうか?要するに

2 C  I  ○
  D  J
1 A  G  
  B  H
3 E  K
  F  L
このようにしたいです。
よろしくお願いいたします。

A 回答 (7件)

例で示したものはどちらかというと表形式的なものです。

ですのでその状態で見るしかないもの。データベース的な処理をしたいのなら、どうにかして修正するしかないでしょう。

こんな感じで。
10 A  G  
11 B  H
20 C  I  ○
21 D  J  ○
30 E  K
31 F  L

修正は量が多いのならマクロを組んでやってしまえば手っ取り早いでしょう。それが難しいのなら最初から入力しなおした方が後々のためにもお勧めかもしれません。
    • good
    • 0

A1からD6までご質問のデータが入っているとすると、データ>並べ替えで3つまで指定できるのでD列、C列、B列の順でソーティングを設定すればよいように感じられますが、結果として示されている2行目がどのようなコンセプトでその位置に来ているのかわかりません。

それを除けば上記のとおりの方法でソーティングできるはずです(おまけ:並べ替えの要素が4以上になる場合には連番を使い、複数段階のソーティングを行います)。
    • good
    • 0

その程度のことなら、「一気」でなく“二気”で可能かと、


1.当該2行を選択して、右クリックから[切り取り]
2.1行目を選択して、右クリックから[切り取ったセ
  ルの挿入]
    • good
    • 0

No2です。


もう一度質問文を読み直しましたら完全に外していました。
無視してください。申し訳ありませんでした。
正しい妙案が浮かんだら書き込みます。
    • good
    • 0

データ→並び替え→第1優先をC列→第2優先をB列で如何でしょうか。

    • good
    • 0

No4です。


E1に=A1、E2に=A1、をそれぞれ入力し、E1およびE2を選択してフィルハンドルをE6までドラッグします。さらに横にH6までドラッグします。コピー&値ペーストをします(安全のため)。アクティブ領域(A1:H6)を選択してH降順、E昇順でソートし、EからHを削除します。
ステップは多くなりますが、元のデータを変更しないで済みます。
(あわてて取り繕ったぼろ隠しのような答えで少々気恥ずかしい気もしますが、何かのご参考に)。
    • good
    • 0

こんばんは。



一応、現在は、2列ごとの並べ替えをするものですが、AA1から右をテンポリーセルとしていますから、もし、そこに何かあるようでしたら、どこか適当な場所にしてください。

'標準モジュール推奨
Sub DoubleRowsSort()
'二行を1行として並べ替えをするマクロ
  Dim rng As Range
  Dim mRow As Integer
  Dim mCol As Integer
  Dim Ar() As Variant
  Dim Ar2() As Variant
  Dim c As Variant
  Dim r As Variant
  Dim i As Integer
  Dim k As Integer
 
  Set rng = Range("A1").CurrentRegion
  mRow = rng.Rows.Count
  mCol = rng.Columns.Count
  ReDim Ar(1 To mRow / 2, 1 To mCol * 2)
  For Each c In Range("A1").CurrentRegion
   i = i + 1
   Ar(Int((i - 1) / (mCol * 2)) + 1, (i - 1) Mod mCol * 2 + 1) = c.Value
  Next c
  Application.ScreenUpdating = False
 'テンポラリセル領域
  With Range("AA1").Resize(mRow / 2, mCol * 2)
   .Value = Ar()
   
   '並べ替え 4列目(D)
   .Sort Key1:=.Range("D1"), Order1:=xlAscending, Header:=xlNo, _
   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   ReDim Ar2(1 To mRow, 1 To mCol)
   For Each r In .Cells
     k = k + 1
     Ar2(Int((k - 1) / mCol) + 1, (k - 1) Mod mCol + 1) = r.Value
   Next
   .ClearContents
  End With
  Application.ScreenUpdating = True
 
  rng.Value = Ar2()
  Set rng = Nothing
End Sub
    • good
    • 0
この回答へのお礼

解答いただいた方ありがとうございます。

お礼日時:2006/02/26 15:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!