今日は、Excelでデータセットを日付でソートする方法を示します。
Excelで作業している間、私たちはしばしば日付を操作する必要があります。 挿入から操作、そしてその間のすべてに。 昇順または降順のいずれかで、日付に従ってデータをソートするデータのセットが与えられます。
続きを読む:日付と時刻でExcelをソートし、年ごとにExcelで日付をソートする方法(4つの簡単な方法)
今日、私はあなたがそれを修正する方法を示します。
練習ワークブックをダウンロード
ここでは、火星グループという名前の会社の一部の従業員のId、名前、および入社日を持つデータセットを持っています。
今日の目的は、従業員を入社日に従って昇順でソートすることです。
Excelツールバーからのソート&フィルタを使用して日付でソート
まず、Excelツールバーからのソート&フィルタセクションを使用してソートします。
データセット全体を選択し、Excelツールバーのホーム>ソート&フィルタオプションに移動します。
ドロップダウンメニューをクリックします。 いくつかのオプションが表示されます。 [カスタムソート]を選択します。
カスタムソートダイアログボックスが表示されます。
続きを読む: Excelでカスタムソートリストを作成する方法
下の列並べ替えのオプションで、並べ替えたい列を選択します。 この例のために、結合日を選択します。
次に、並べ替えオプションで、セル値を選択します。
そして、[順序]オプションで、昇順または降順のいずれかを選択します。 この例では、昇順で並べ替えを選択します。
をクリックします。
データセット全体が、結合日に従って昇順でソートされています。:
でソートされたデータセットであり、必要に応じて降順でソートすることもできます。
同じ手順に従ってください。
ソート関数
を使用して日付順にソートする前のセクションでは、データセット全体を一度ソートしました。
しかし、元のデータセットを変更せず、ソートされたデータセットのコピーを別の場所に作成するだけの場合はどうなりますか?
これはExcelのソート機能を使用して使用できます。
セルを選択し、この数式を挿入します:
=SORT(B4:D19,3,1,FALSE)
を使用して日付でソートすると、データセットのソートされたコピーが取得されます。
ここでは、結合日に応じて昇順に並べ替えました。
式の説明
- SORT関数は、array、sort_index、sort_order、by_colの四つの引数を取ります。
- 配列は、ソートするセルの範囲です。 ここでは、データセット全体をソートしたいので、配列はB4:D19です。
- Sort_Indexは、配列内でソートする行または列の数です。
ここでは、配列の3番目の列である結合日に従ってソートします。
したがって、sort_indexは3です。
- sort_Order昇順または降順で並べ替えるかどうかを決定します。 昇順の場合は1、降順の場合は-1。
ここでは昇順に並べ替えます。 そこで1を使いました。 あなたはあなたのものを使用します。
- By_Colは、行単位または列単位でソートするかどうかを示します。 列単位が必要な場合はTRUE、行単位が必要な場合はFALSEです。
ここでは、データを行単位で並べ替えます。
だから、あなたはFALSEを使用します。
- したがって、完全な式は
SORT(B4:D19,3,1,FALSE)
になります。 セルB4:D19の範囲を列番号3に従って昇順に並べ替えます。
Sortby関数を使用して日付でソートする
今、あなたは質問することができます:
データセット全体ではなく、Idと名前だけをソートし、結合日に応じてソート
SORT関数を使用してこれを達成することはできません。ただし、ExcelのSORTBY関数を使用してこれを実行できます。
セルを選択し、この数式を挿入します:
=SORTBY(
B4:C19
,
D4:D19
,1)
のSORTBY関数を使用して日付でソートすると、従業員Idと従業員名が結合日に応じて昇順にソートされます。
式の説明
- SORTBY関数は、array、by_array、sort_orderの三つの引数を取ります。
- 配列は、ソートするセルの範囲です。 従業員IDと従業員名の2つの列を並べ替えます。
だから私たちの配列はB4:C19です。
- By_Arrayは、ソートする列です。 これは、配列内または配列外にある可能性があります。
私たちは、結合日に応じてソートしたいです。 したがって、by_arrayはD4:D19です。
- Sort_Orderは、ソートする順序です。 昇順の場合は1、降順の場合は-1。
昇順に並べ替えたいと思います。 そこで1を使いました。 あなたはあなたのものを使用します。
- したがって、完全な式は次のようになります
SORTBY(
B4:C19
,
D4:D19
,1)
. セルB4:C19の範囲は、列D4:D19に従って昇順でソートされます。
SORTBY関数を使用してデータセット全体をソートすることもできます。
SortbyとMONTH関数を使用して月でソート
これまでは、日付全体でのみソートしていました。
また、ExcelのSORTBY関数とMONTH関数を使用して、データセットを月単位で特別にソートすることもできます。
結合日の月に基づいてデータセットをソートするには、新しいセルを選択し、次の数式を挿入します:
=SORTBY(B4:D19,MONTH(D4:D19),1)
を使用して月でソートすると、従業員の入社日の月で昇順にソートされたデータセットが表示されます。
式の説明
- ここでソートされる配列は範囲B4:D19です。
- by_array引数は、数式
MONTH(D4:D19)
によって返される配列です。 これは、結合日の月数を返します。 - 昇順で並べ替えているため、sort_orderは1です。 降順に並べ替えるには、-1を使用します。
- だから、式
SORTBY(B4:D19,MONTH(D4:D19),1)
は、日付D4の月に応じてデータセットB4:D19をソートします:D19、昇順で。
Sortby関数とDAY関数を使用して日でソート
必要に応じて、sortby関数とDAY関数の組み合わせを使用して、結合日のdayセクションに従ってデータセットをソート
だからここでは、式を書く方法です:
=SORTBY(B4:D19,DAY(D4:D19),1)
SortbyおよびYEAR関数を使用した年でのソート
結合日の年のみに基づいてデータセットをソートすることもできます。 式は次のようになります:
=SORTBY(
B4:D19
,YEAR(
D4:D19
),1)
を使用して年でソートすると、データセットが年に従って昇順にソートされます。
Sortby、DAY、MONTH関数を使用して日と月でソートする
今回は新しいデータセットがあります。
ひまわり幼稚園という学校の生徒のId、名前、誕生日を持っています。
今、私たちは昇順で、学生の誕生日の日と月に応じてデータセットをソートします。
たとえば、3つの誕生日が2008年8月10日、2010年3月5日、2009年12月12日の場合、シリアルは2010年3月5日、2008年8月10日、2009年12月12日になります。
これを行うには、新しいセルを選択し、次の数式を挿入します:
=SORTBY(B4:D19,MONTH(D4:D19)+(DAY(D4:D19)/100))
を使用して、日と月でソートすると、昇順の誕生日でソートされたデータセットが取得されます。
式の説明
- ここでソートされる配列はB4:D19です。
- by_array引数は、数式
MONTH(D4:D19)+(DAY(D4:D19)/100)
によって返される配列です。
日を100で除算し、それらを月で加算します。
例えば、2-Janは1(January)になります)+(2/100)=1.02
16-Janは1.16
25-Febは2.25
9-Decは12.09
このようにして、二つの日付が同じ月を持っていても、年の最初に来る日は最小の値になります。
そして、2つの日付が同じ月を持っていても、その年の最後に来る日は最大の値を持ちます
- 昇順で並べ替えているので、sort_orderは1です。 降順に並べ替えるには、-1を使用します。 したがって、数式
SORTBY(B4:D19,MONTH(D4:D19)+(DAY(D4:D19)/100))
は、データセットB4:D19を、日付D4:D19の月と日のみに従って昇順でソートします。
INDEX-MATCH、ROW、およびRANK関数を使用して日付でソートします
さて、この新しいデータセットを見てください。
最初のデータセットとほぼ同じですが、従業員名と入社日の間に新しい列Salaryが挿入されています。
さて、すべての列ではなく、従業員ID、従業員名、参加日のみを、参加日に応じてソートしたい場合はどうなりますか?
ExcelのSORTまたはSORTBY関数を使用してこれを実行することはできません。
SORTおよびSORTBY関数を使用すると、隣接する列のみを並べ替えることができ、隣接していない列は並べ替えることができません。
つまり、名前、給与、入社日を並べ替えることができます。 またはId、名前、および給与。 または名前と給与。
しかし、Id、名前、および結合日はありません。
EXCELのINDEX–MATCH関数、ROW関数、RANK関数を組み合わせて、隣接していない列を並べ替えることができます。
続きを読む:Excelの値で列を並べ替える
id、名前、結合日を結合日に従って昇順で並べ替えるには、新しいセルを選択し、この数式を挿入します:
=INDEX(B4:E19,MATCH(ROW(A1:A16),RANK(E4:E19,E4:E19,1),0),{1,2,4})
を使用して日付でソートすると、従業員Id、従業員名、および入社日が、入社日に従って昇順にソートされています。
式の説明
-
ROW(A1:A16)
次のように、1から16までの数値を持つ配列を返します{1, 2, 3, …, 16}. 私の各列には16個の値(B4:B19)があるため、1から16まで取得しました。
あなたはあなたのものを使用します。
-
RANK(E4:E19,E4:E19,1)
列E4:E19内の各セルのランクを昇順で含む配列を返します。 降順で取得するには、1の代わりに0を使用します。 -
MATCH(ROW(A1:A16),RANK(E4:E19,E4:E19,1),0)
は、配列内の各数値の位置を返します{1, 2, 3, …, 16} RANK関数によって返される配列内。
つまり、最初に元のデータセットの1番目の日付の行番号を昇順で返します。
次に、2番目の日付の行番号を返します。
そして3日目。
したがって、16番目の日付まで戻ります。
- 最後に、
INDEX(B4:E19,MATCH(ROW(A1:A16),RANK(E4:E19,E4:E19,1),0),{1,2,4})
は、範囲B4:E19の1,2および4列(ID、名前、結合日)を昇順で返します。
他の列を並べ替えるには、それに応じて数式を調整します。
注:SORT関数とSORTBY関数は、Office365でのみ使用できます。 したがって、Office365サブスクリプションをお持ちでない場合は、この手順を使用する必要があります。
問題のトラブルシューティングExcelで日付を並べ替えるに直面する可能性があります
Excelで日付を操作している間、いくつかの一般的な問題に直面しています。Excelが日付を日付として認識しない
これが最も一般的な問題です。 従来の方法(mm-dd-yyyyまたはdd-mm-yyyy)を使用してExcelのセルに日付を挿入することがありますが、Excelは日付として認識しません。
この問題を解決するには、日付を手動で挿入するのではなく、ExcelのDATE関数を使用します。たとえば、一部のセルに2-May-1996を挿入する場合は、05-02-96ではなくDATE(1996,5,2)を使用します。Excelが日付を日付として認識しているかどうかを知るにはどうすればよいですか?
日付がデフォルトでセル内で右揃えされている場合、Excelは日付として認識しています。
しかし、それが左揃えされている場合、Excelは持っていません。下の画像では、Excelは最初のものを日付として認識しますが、2番目のものは認識しません。
日付を持つ数式のエラー
これも一般的な問題です。 数式の中に直接日付を挿入すると、Excelにエラーが表示されます。
この問題を解決するには、従来の方法で数式内で直接日付を使用しないでください。 DATE関数を使用して、数式内に日付を挿入します。
たとえば、=MONTH(05-02-96)
は使用しないでください。
Use=MONTH(DATE(1996,5,2))
一般的な形式で日付を見ている間に混乱する
Excelは日付を日付として認識することがありますが、一般的な形式(デフォルトで設定されています)で
たとえば、日付2-May-1996はデフォルトで35187と表示されます(書式を正しく変更しない場合)。
この問題を解決するには、セルを選択し、ExcelツールバーのHome>Number Formatに移動します。 次に、短い日付を選択します。
結論
これらの方法を使用すると、昇順と降順の両方で、日付に従ってExcelで任意のデータセットをソートできます。 もう方法を知っていますか? それとも何か質問がありますか? 私達に尋ねること自由に感じなさい。
続きを読む:
- Excelの日付を時系列順に並べ替える(6つの効果的な方法)
- Excelで姓で並べ替える方法(4つの方法)
- Excelで複数の列を並べ替える方法(5つのクイックアプローチ)
- Excelで複数の列を自動ソートする方法(3つの方法)
- Excelで2つの列を並べ替える方法(両方とも正確な方法)
- 一致するようにExcelで2つの列を並べ替える方法(両方とも正確な方法)
- Excelで色でデータをソートする方法(4つの基準)
- 複数の列を持つexcelでアルファベット順にソートする方法(4つの方法)