[[20230317135836]] 『並べ替えの方法を教えてください』(枕カバー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『並べ替えの方法を教えてください』(枕カバー)

Office Personal 2021のエクセルを使用しています。かなりの初心者です。
例えばエクセルのタブ1で↓を入力したとして、
    A   B   C
1行目 3/17 トマト 600円
2行目 1/14 豚バラ 100円
3行目 12/11 玉ねぎ 200円
4行目 3/5 もやし 50円

タブ2で↓を入力したとします。
    A   B   C
1行目 12/11 玉ねぎ 200円
2行目 3/5 もやし 50円
3行目 3/17 トマト 600円
4行目 1/14 豚バラ 100円

タブ1も2と同じように並べ替える方法はありますか?
いままで行切り取り→貼り付けして並べ替えていましたが、こんな感じのが2000行ほどあるのでなにか方法があれば教えて欲しいです。
なお、入力するものに日付や金額など規則性はありません。
ただタブ2と同じように並べ替えたいだけです。
よろしくお願いいたします。

< 使用 Excel:Excel2021、使用 OS:Windows10 >


Sheet1のA1に
 =sheet2!A1

必要分コピー
(シート名は本物の名前に直してください)
(てきとうです) 2023/03/17(金) 14:30:47


 タブがシートのことでいいのかしら?
 別々に入力したものを、シート2に合わせて、シート1を並べ替えを行いたいってことですか?
(稲葉) 2023/03/17(金) 14:31:48

すみませんそれだとちょっと欲しい情報と違いました、
説明不足ですみません。シート1には↓
    A   B   C    D       E
1行目 3/17 トマト 600円 ○○スーパー 家から1km 
2行目 1/14 豚バラ 100円 八百屋  家から200m
3行目 12/11 玉ねぎ 200円 ××スーパー 家から電車1駅
4行目 3/5 もやし 50円  デパ地下 家から電車5駅
等々D列以降も複数の入力があります。
それに対してタブ2で入力されているのは↓のみです。
    A   B   C
1行目 12/11 玉ねぎ 200円
2行目 3/5 もやし 50円
3行目 3/17 トマト 600円
4行目 1/14 豚バラ 100円

D列以降の情報も丸々合わせて並べ替えをしたいです。

あとタブはシートです。わかりづらくて本当にすみません……
(枕カバー) 2023/03/17(金) 14:39:46


 シート1に入力されているデータと対応するものがシート2には必ずあるのだろうか?
(ねむねむ) 2023/03/17(金) 14:42:22

 シート2
 D1=A1&"_"&B1&"_"&C1
 と入力して下方向にコピー 
    |[A]     |[B]   |[C]  |[D]               
 [1]|12月11日|玉ねぎ|200円|45271_玉ねぎ_200円
 [2]|3月5日  |もやし|50円 |44990_もやし_50円 
 [3]|3月17日 |トマト|600円|45002_トマト_600円
 [4]|1月14日 |豚バラ|100円|44940_豚バラ_100円

 シート1
 F1=MATCH(A1&"_"&B1&"_"&C1,シート2!D:D,0)
 と入力して下方向にコピー

    |[A]     |[B]   |[C]  |[D]         |[E]          |[F]
 [1]|3月17日 |トマト|600円|○○スーパー|家から1km |  3
 [2]|1月14日 |豚バラ|100円|八百屋      |家から200m   |  4
 [3]|12月11日|玉ねぎ|200円|××スーパー|家から電車1駅|  1
 [4]|3月5日  |もやし|50円 |デパ地下    |家から電車5駅|  2

 シート1をA:F列全体を選択し、並び替え>F列で昇順
 並び替え後
    |[A]     |[B]   |[C]  |[D]         |[E]          |[F]
 [1]|12月11日|玉ねぎ|200円|××スーパー|家から電車1駅|  1
 [2]|3月5日  |もやし|50円 |デパ地下    |家から電車5駅|  2
 [3]|3月17日 |トマト|600円|○○スーパー|家から1km |  3
 [4]|1月14日 |豚バラ|100円|八百屋      |家から200m   |  4

 これでいいのかしら?
(稲葉) 2023/03/17(金) 14:44:28

すみませんシート1 F1=MATCH(A1&"_"&B1&"_"&C1,シート2!D:D,0)を今使っているエクセルの列番号等に打ち換えて入力しているのですが何回やっても♯N/Aと出ます。
なにか自分が間違えていると思うのですがなにがどう違うのか分からないです。
上記のF1にあたるものを実際のシート2がK列まであるからL列に入れたのですがそれが原因でしょうか。
教えていただいた関数そのままだとエラーが出たので試しにMATCH(A1&"_"&B1&"_"&C1〜…とKまで書いてみましたがエラーでした。
あとシート1に入力されているデータは必ずシート2にあります。
(枕カバー) 2023/03/17(金) 15:11:59

Sheet2と同じようにSheet1並べ替える方法はありますか?

Sheet1

    |[A]     |[B]   |[C]|[D]      |[E]          
 [1]|3月17日 |トマト|600|Aスーパー|家から1km  
 [2]|1月14日 |豚バラ|100|八百屋   |家から200m  
 [3]|12月11日|玉ねぎ|200|Bスーパー|家から電車1駅
 [4]|3月5日  |もやし| 50|デバ地下 |家から電車5駅

Sheet2

    |[A]     |[B]   |[C]|[D]      |[E]          
 [1]|12月11日|玉ねぎ|200|Bスーパー|家から電車1駅
 [2]|3月5日  |もやし| 50|デバ地下 |家から電車5駅
 [3]|3月17日 |トマト|600|Aスーパー|家から1km  
 [4]|1月14日 |豚バラ|100|八百屋   |家から200m  

 '---------------------------------------------------

 Sheet2
 F1=A1&B1&C1&D1&E1
 と入力して下方向にコピー 

     |[A]     |[B]   |[C]|[D]      |[E]          |[F]            
 [1]|12月11日|玉ねぎ|200|Bスーパー|家から電車1駅|=A1&B1&C1&D1&E1
 [2]|3月5日  |もやし| 50|デバ地下 |家から電車5駅|=A2&B2&C2&D2&E2
 [3]|3月17日 |トマト|600|Aスーパー|家から1km  |=A3&B3&C3&D3&E3
 [4]|1月14日 |豚バラ|100|八百屋   |家から200m  |=A4&B4&C4&D4&E4

 Sheet1
 =MATCH(A1&B1&C1&D1&E1,Sheet2!F:F,0)
 と入力して下方向にコピー

     |[A]     |[B]   |[C]|[D]      |[E]          |[F]                                
 [1]|3月17日 |トマト|600|Aスーパー|家から1km  |=MATCH(A1&B1&C1&D1&E1,Sheet2!F:F,0)
 [2]|1月14日 |豚バラ|100|八百屋   |家から200m  |=MATCH(A2&B2&C2&D2&E2,Sheet2!F:F,0)
 [3]|12月11日|玉ねぎ|200|Bスーパー|家から電車1駅|=MATCH(A3&B3&C3&D3&E3,Sheet2!F:F,0)
 [4]|3月5日  |もやし| 50|デバ地下 |家から電車5駅|=MATCH(A4&B4&C4&D4&E4,Sheet2!F:F,0)

Sheet1をA:F列全体を選択し、並び替え>F列で昇順で並び替えを実施

'---------------------------------------

(訂正) 2023/03/17(金) 15:25:48


なにか間違えたらしく♯NAME?が出ました。
シート1には1〜3行目まで項目等が入っているので4行目から、またAN列まで必要項目が入っているので
AO列に下記をいれました。
=MATCH(A4&B4&C4&D4&E4&F4&J4&H4&I4&J4&K4&L4&M4&N4&O4&P4&Q4&R4&S4&T4&U4&V4&W4&X4&Y4&Z4&AA&AB4&AC4&AD4&AE4&AF4AG4&AH4&AI4&AJ4&AK4&AL4&AM4&AN4,Sheet2!L:L,0)

長すぎるせいでしょうか……?
(枕カバー) 2023/03/17(金) 15:41:53


 全部一致してないとだめなデータなんですか?
 そうでなければ、最初に提示したA〜C列の必要最小限だけ文字列つなげばいいのでは。

(稲葉) 2023/03/17(金) 15:59:36


全部一致していないとだめなデータです!
(枕カバー) 2023/03/17(金) 16:01:57

 横から失礼します。 
 提示のデータは多分本来のデータとは違う内容なのでしょうけれど、
 Sheet2はマスタ的なものでしょうか?

 Sheet1をSheet2と全く同じ並び順にしたい目的は何ですか?
 そのあたりを説明されると、何か良い案が出てくるかもしれません。
(めいぷる) 2023/03/17(金) 16:19:08

目的は会社提出データ抽出です。
シート1は顧客依頼情報で、依頼が来た順にエクセルに入れていきます。住所・名前・依頼内容等1人に対し40個あり、規則性はありません。
シート2が今月請求に回す顧客依頼情報です。
上司から今月この分を請求に回しますとエクセルでデータが回ってきます(シート2)。
そこには名前や請求金額は書いてありますが住所等が記載されておりません。
そのためシート1から住所等を抽出しなければなりません。
またシート2の順番通りに提出する必要があります。
(枕カバー) 2023/03/17(金) 16:28:05

 上司はそのやり方を知ってるんだろうから、まず聞いてみては・・・?
 シート1から住所だけ抜くならVLOOKUPでいかがでしょう?
https://dekiru.net/article/21009/

 シート2の並べ替えは本当に全部の項目で一致する必要あります?
 シート1にあって、シート2に無い項目があるんじゃないですか? 住所とか。

(稲葉) 2023/03/17(金) 16:47:03


Sub test()
Dim rg As Range, rw As Long
With Sheets("Sheet1")
    .Columns("A:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Set rg = .Range("A1:B1")
    rw = .Range("C" & Rows.Count).End(xlUp).Row
    rg.Value = Array("=CONCAT(Sheet2!RC:RC[2])", "=MATCH(CONCAT(RC[1]:RC[3]),C[-1],0)")
    rg.AutoFill Destination:=.Range("A1:B" & rw), Type:=xlFillDefault
    .Range("A1:B" & rw).Value = .Range("A1:B" & rw).Value
    .Columns.Sort key1:=.Range("B1"), Order1:=xlAscending
    .Columns("A:B").Delete Shift:=xlToLeft
End With
End Sub
(mm) 2023/03/17(金) 16:57:11

上司からこのやり方を教わり会社全体で同じやり方をしています。
なので改善方法があればと質問させていただきました。
あと
シート2の並べ替えは本当に全部の項目で一致する必要あります?
 シート1にあって、シート2に無い項目があるんじゃないですか? 住所とか。
↑がよくわからないのですが、やりたいのはシート2の不足している情報からシート1の完全な情報を抜き出したいんです。またシート2の順番通りに並び替えて提出する必要があります。

それからコードを書いていただいた方すみません、本当に初心者なもので書いてあることが読み取れずどう実際のエクセルに反映して直せばいいか分かりません……。

(枕カバー) 2023/03/17(金) 17:05:06


 >シート1は顧客依頼情報で、依頼が来た順にエクセルに入れていきます。住所・名前・依頼内容等1人に対し40個あり、規則性はありません。
 >シート2が今月請求に回す顧客依頼情報です。

 例示のデータは買い物内容のようなデータなので分かりづらいのですが、
 シート2の顧客依頼情報1件に対してシート1のデータも1件なのでしょうか。(1対1)
 どの項目がKEYになるかが分かれば、稲葉さんのおっしゃるようにシート2にVLOOKUP(あるいはXLOOHUP)の関数を入れるだけで良いように思いますが、
 現状の説明ではそのあたりがいまいち分からないですね。

(めいぷる) 2023/03/17(金) 17:15:21


>D列以降の情報も丸々合わせて並べ替えをしたいです。
この情報が出ない限り回答はむりでしょう
何をもって並び替えが必要なんでしょうか。

(ちゃちゃ) 2023/03/17(金) 17:21:38


シート1は
管理NO 受付日 住所 名前 電話番号 依頼内容 担当者 請求額 備考 依頼区分 その他ですね。
シート2は 
今回の請求順序 管理NO(不規則、昇順等ではない) 名前 依頼完了日 請求額 支払日 等々です。
(省いたのは会社が特定されそうな項目です)

(枕カバー) 2023/03/17(金) 17:24:33


 >シート1は
 >管理NO 受付日 住所 名前 電話番号 依頼内容 担当者 請求額 備考 依頼区分 その他ですね。
 >シート2は 
 >今回の請求順序 管理NO(不規則、昇順等ではない) 名前 依頼完了日 請求額 支払日 等々です。

 シート2の項目のうち、上司から貰うときに入力されている項目はどれですか?
 また、管理No.は一意ですか?

(めいぷる) 2023/03/17(金) 17:36:56


 シート1と2の管理Noは合ってるんじゃ?
 シート1がこうだとして、
 L2=VLOOKUP(A2,Sheet2!B:I,8,0)
 下にコピー(この時点ではエラーのはず)
    |[A]   |[B]       |[C]         |[D]   |[E]     |[F]     |[G]   |[H]   |[I]          |[J]     |[K]   |[L]         
 [1]|管理NO|受付日    |住所        |名前  |電話番号|依頼内容|担当者|請求額|備考         |依頼区分|その他|並べ替えキー
 [2]|     1|2023/12/11|××スーパー|玉ねぎ|        |        |A     |200円 |家から電車1駅|        |      |           4
 [3]|     2|2023/3/5  |デパ地下    |もやし|        |        |B     |50円  |家から電車5駅|        |      |           5
 [4]|     3|2023/3/17 |○○スーパー|トマト|        |        |C     |600円 |家から1km |        |      |           2
 [5]|     4|2023/1/14 |八百屋      |豚バラ|        |        |D     |100円 |家から200m   |        |      |           3 

 シート2がこうだとして、
 H2=VLOOKUP(B2,Sheet1!A:C,3,0)
 I2=ROW()
 それぞれ下にコピー

    |[A]     |[B]   |[C]   |[D]       |[E]   |[F]   |[G] |[H]         |[I]         
 [1]|請求順序|管理NO|名前  |依頼完了日|請求額|支払日|等々|住所        |並べ替えキー
 [2]|        |     3|トマト|          |      |      |    |○○スーパー|           2
 [3]|        |     4|豚バラ|          |      |      |    |八百屋      |           3
 [4]|        |     1|玉ねぎ|          |      |      |    |××スーパー|           4
 [5]|        |     2|もやし|          |      |      |    |デパ地下    |           5

 んでシート1の並べ替えキーで並べ替えれば
 同じ並び順になる。
    |[A]   |[B]       |[C]         |[D]   |[E]     |[F]     |[G]   |[H]   |[I]          |[J]     |[K]   |[L]         
 [1]|管理NO|受付日    |住所        |名前  |電話番号|依頼内容|担当者|請求額|備考         |依頼区分|その他|並べ替えキー
 [2]|     3|2023/3/17 |○○スーパー|トマト|        |        |C     |600円 |家から1km |        |      |           2
 [3]|     4|2023/1/14 |八百屋      |豚バラ|        |        |D     |100円 |家から200m   |        |      |           3
 [4]|     1|2023/12/11|××スーパー|玉ねぎ|        |        |A     |200円 |家から電車1駅|        |      |           4
 [5]|     2|2023/3/5  |デパ地下    |もやし|        |        |B     |50円  |家から電車5駅|        |      |           5

 これで伝わらなければ、私には手に負えないのでおさらばです・・・
(稲葉) 2023/03/17(金) 17:38:34

 並べ替えをしたいのはシート1の方ですよね。
 そして並べ替える目的は、シート2に必要な項目をシート1からコピペするため。

 >シート2がこうだとして、
 >H2=VLOOKUP(B2,Sheet1!A:C,3,0)

 これで必要な項目の内容が取れれば、シート1を並べ替える必要は無いのでは?
 場合によってはVLOOKUPよりXLOOKUPの方が使いやすいかもしれません。

(めいぷる) 2023/03/17(金) 18:15:13


 >またシート2の順番通りに提出する必要があります。
 >(枕カバー) 2023/03/17(金) 16:28:05

 らしいっす。
 会社ルールならしゃーない。

 パワークエリで、1シート出力がよさそうなんだけどねぇ。
(稲葉) 2023/03/17(金) 18:27:52

ありがとうございます!
定時退社日で試している最中に帰社命令が出てしまったので改めて週明けチャレンジしてみます。
色々ありがとうございました!
(枕カバー) 2023/03/17(金) 20:00:43

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.