• 締切済み

Excelについて

Excelで、A列に複数の数値が入ってて(1~500、数値は日によってバラバラ)、 B列にも数値(同じ桁数、毎回違う)が入ってます。A列が同じ数値のところだけ、B列だけを並び替える、というのは可能なんでしょうか。まず手順が知りたいです。 それを手動でやるのは大変なので、マクロも作成するつもりです。 説明がわかりずらくて申し訳ないですが、どなたか教えてください。 宜しくお願い致します。 ネットか本で調べるしか方法がなく、他にExcelについてどうしたら学べるでしょうか。。個人的に知りたいExcelの情報が見つかりません。

みんなの回答

  • sknbsknb2
  • ベストアンサー率38% (1158/3030)
回答No.8

回答No.7です。回答No.7の補足についてです。 手順を示されても、実際にどうしたいのかはわかりません。 回答No.1の補足であなたが示した下記の形式(ソート前とソート後の状態がわかる形式)で最初の状態と最後の状態を書いてください。下記の形式は、必要な列が省かれていると思うので、必要な列を省かずに書いてください。 A B → A B 1 3 1 1 1 2 1 2 1 1 1 3 1 4 1 4 2 2 2 1 2 1 2 2

s1194
質問者

補足

画像を添付しようと思い先程の説明をしたのですが、添付ができませんでした。なので、新しく質問し直しました。 よければそちらの画像を見れますでしょうか。すみません、ありがとうございます。

  • sknbsknb2
  • ベストアンサー率38% (1158/3030)
回答No.7

回答No.2です。回答No.2の補足についてです。 並び替える前がどうなっていて、結果をどうしたいのかというのを、回答No.1の形式で、必要な列を省かずに示してください。 A列が昇順になっているところからの作業でいいなら、それを並び替える前の状態として示してください。

s1194
質問者

補足

申し訳ございません。。 最初の状態です。D列を昇順→A列を昇順→BとC列だけにフィルターをかけなおし、C列を昇順にするんですが、A列が200の行だけを昇順にして、A列が300の行だけを昇順にする、という感じです。手動で選択範囲とフィルターをかけなおせば可能かもしれませんが、効率が悪いんです。 そもそもこれが正解なのかもわかりません。もっといい方法や手順があるかもしれません。。。

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.6

A列は並べ替えてはいけないと思っていました。 AB列を選んで並び替えればC列以右は影響しません。 マクロもこれだけです。 ' Sub Macro1() ' [A:B].Sort Key1:=[A1], Order1:=xlAscending _ , Key2:=[A1], Order2:=xlAscending End Sub いきなりL列が出てきましたが、どうするのか判らないのでとりあえず無視します。

  • hiro_1116
  • ベストアンサー率30% (2557/8269)
回答No.5

No.1です。補足を拝見しました。 元データでA列が昇順に並んでいるなら、No.2の回答者様が書かれてている方法で一発解決です。

s1194
質問者

補足

C列以降も数値があるんです。B列だけを並び替えたいんです。

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.4

真ん中の   Range("A2:A" & REnd) = Range("A2:A" & REnd).Value は消して下さい。 (消さなくても動きますが、余計なものは省いた方が少しでも早くなると思うので)

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.3

A列は並べ替えたらいけないのですね。(並べ替えていいなら簡単なのですが) ヘッダー無しのいきなりデータ。画像の様な並べ替えでいいですか。 Option Explicit ' Sub Macro1()   Dim REnd As Long '   REnd = Cells(Rows.Count, "A").End(xlUp).Row   [A:A].Insert   [A1] = 1   Range("A2:A" & REnd) = "=A1+(B1<>B2)"   Range("A2:A" & REnd) = Range("A2:A" & REnd).Value   Range("A1:C" & REnd).Sort Key1:=[A1], Order1:=xlAscending _               , Key2:=[C1], Order2:=xlAscending   [A:A].Delete End Sub

s1194
質問者

補足

L列を昇順→A列を昇順→B列だけにフィルターをかけて、A列の数値が同じ範囲だけで昇順、ということをやりたいんです。なかなか言葉にするのが難しくて… 教えてくださったもので、1度やってみます!ありがとうございます!!

  • sknbsknb2
  • ベストアンサー率38% (1158/3030)
回答No.2

最優先されるキーを列Aにして昇順、 2番目に優先されるキーを列Bにして昇順、 にすればできると思います。

s1194
質問者

補足

それだと、C以降の列も並び替わっちゃうんです。あくまでも、B列のみを並び替えたいんです。。

  • hiro_1116
  • ベストアンサー率30% (2557/8269)
回答No.1

やりたい事を例を示して分かりやすく説明してください。

s1194
質問者

補足

A B → A B 1 3 1 1 1 2 1 2 1 1 1 3 1 4 1 4 2 2 2 1 2 1 2 2 A列が1に該当するB列だけを並び替えたいんです。A列が2に該当するB列だけを並び替えたいんです。 フィルターでA列の1だけを絞り、B列を昇順にすればできますが、A列にある数値全てで同じ作業をするのは大変です。。 C列以降も数値があるので、あくまでもB列だけを並び替えたいんです。 説明が下手で申し訳ないです…

関連するQ&A