プロが教えるわが家の防犯対策術!

入力のシート(総合入力)があってその一つの項目日付があるのですが、それを別シートの項目に反映しています。
それは自動的に日付順にしたいのですが、計算式が入っているせいなのか、マクロの記録を使ってやろとうしましたが、うまく出来ません。
そもそも手動で並び替え、昇順にしても入力した順になってしまいます。

=IF(MAX(総合入力!$AG:$AG)<ROW()-6,"",INDEX(総合入力!$B:$AB,MATCH(ROW()-6,総合入力!$AG:$AG,0),COLUMN()-1))

良い手はないでしょうか?

Excel2010

質問者からの補足コメント

  • GooUserラックさん
    ありがとうございます。そうです別シートです。
    以下のように対象のsheetの見出しを右クリックして
    コードの表示を開き以下の記述をしました。
    Sub 順番を変える()
    Worksheet("sheet2").Active
    Range("A6").Sort Key1:=Range("B6"), _
    Order1:=xlAscending, Header:=xlYes
    End Sub

    A6は番号のNo見出しで B6は売上日の見出しです。

    なんともなりません。すみませんお手数ですが、
    以上はどこが間違っているんでしょうか? VBAはほとんどやったことがりません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/12/04 11:36
  • GooUserラックさん
    ありがとうございます。

    そうです、範囲はM66です。A6にNo、売上日な項目のタイトルがあって
    A7~M66の範囲です。
    キー日付のみの順番なので、B列のみです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/12/04 13:41

A 回答 (4件)

対象のシートモジュールにコードを書き込まないとダメです。

(下図参照)
左側の「Sheet2(Sheet2)」をダブルクリックして、右側の欄に次のコードを書き込んでください。(「Sheet2(Sheet2)」は、名前を変更していたら変わります、適当に修正してください)
-----------------------------------------------------------------------
Private Sub Worksheet_Activate()
Range("A7:M66").Sort _
Key1:=Range("B7"), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub
-----------------------------------------------------------------------
「計算式の入ったセルを自動的に日付順にでき」の回答画像4
    • good
    • 0
この回答へのお礼

GooUserラックさん
図まで入れていただいて恐縮です。ありがとうございます。
やってみます。

お礼日時:2016/12/04 16:37

元の値のセルをコピーするのではなく、そのセルの値をコピーする必要があると思うのです。



Excelの機能としてはコピーした日付を「値として貼り付け」ですね。
そののちに並べ替えを行ってみましょう。

・・・
ROW関数で得られた行を示す値が日付に変換されているのではないかと予測してみました。
    • good
    • 0
この回答へのお礼

銀鱗さん
ありがとうございます。
なるほど、ちょっと考えてみます。

お礼日時:2016/12/04 14:02

ソートする範囲はどこからどこまでですか?


(実際にソートしたいのはA7から一番右下までで良いですか?)
ソートのキーになる列はB列のみですか?
この回答への補足あり
    • good
    • 0

日付順に並べたいシートは「総合入力」でしょうか?それとも別シートでしょうか?


別シートならば、そのシートの「Worksheet_Activate()」イベントに並べ替えを記述すれば良いのでは?どうせそのシートを見るまでは並び替えられていなくても判らない訳ですから…
この回答への補足あり
    • good
    • 0

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