- 締切済み
vlookup
エクセル関数 超初心者です。 数式教えてください。 列A 列B 赤 白 青 赤 黄 青 桃 桃 を次のように 並べ替えたいのですが。 列A 列B 赤 赤 青 青 黄 白 桃 桃 どのように並べ替えればいいですか? 教えてgoo
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ka_na_de
- ベストアンサー率56% (162/286)
作業列を使う方法です。 1)C列にA列、B列を縦に並べる ※)コピー&ペーストしてください。 2)C列の重複を削除してD列に並べる ※)まず、1行目を挿入し、C1セルに"見出し"と入力 「データ」→「フィルター」→ 「フィルターオプションの設定」→ 「抽出先」を「指定した範囲内」にチェック 「リスト範囲」を「$C:$C」 「抽出する範囲」を「$D:$D」 「重複するレコードは無視する」にチェック 「OK」 3)1行目を削除 4)E1セルに =IF(ISERROR(VLOOKUP($D1,A:A,1,FALSE))=TRUE,"",VLOOKUP($D1,A:A,1,FALSE)) と入力し、E列F列の以下のセルにコピー&ペースト 5)E、F列をコピーして、「編集」→「形式を選択して貼り付け」 →「値」にチェックして「OK」すれば、値が固定されます。 以上の操作をマクロにしてみました。 興味は無いかもしれませんが、参考までに。 Sub test1() Dim ALastRow As Long Dim BLastRow As Long Dim DLastRow As Long Dim r As Long, c As Long Dim FindCell As Range '表示領域の初期クリア Range("C:IV").Clear 'C列にA列、B列を縦に並べる ALastRow = Cells(Rows.Count, "A").End(xlUp).Row BLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("A1:A" & ALastRow).Copy _ Destination:=Range("C1") Range("B1:B" & BLastRow).Copy _ Destination:=Range("C" & ALastRow + 1) 'ダミーの見出し行追加 Rows(1).Insert Shift:=xlDown Range("C1").Value = "見出し" 'C列の重複を削除してD列に並べる Range("C:C").AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=Columns("D:D"), Unique:=True 'ダミーの見出し行削除 Rows(1).Delete 'E,F列にVLOOKUP関数を代入 DLastRow = Cells(Rows.Count, "D").End(xlUp).Row Range("E1:F" & DLastRow).Formula = _ "=IF(ISERROR(VLOOKUP($D1,A:A,1,FALSE))=TRUE,"""",VLOOKUP($D1,A:A,1,FALSE))" '作業列のC,D列を非表示 Columns("C:D").Hidden = True End Sub さらに、VLOOKUP関数の代わりにFindメソッドを使った例です。 Sub test2() Dim ALastRow As Long Dim BLastRow As Long Dim DLastRow As Long Dim r As Long, c As Long Dim FindCell As Range '表示領域の初期クリア Range("C:IV").Clear 'C列にA列、B列を縦に並べる ALastRow = Cells(Rows.Count, "A").End(xlUp).Row BLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("A1:A" & ALastRow).Copy _ Destination:=Range("C1") Range("B1:B" & BLastRow).Copy _ Destination:=Range("C" & ALastRow + 1) 'ダミーの見出し行追加 Rows(1).Insert Shift:=xlDown Range("C1").Value = "見出し" 'C列の重複を削除してD列に並べる Range("C:C").AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=Columns("D:D"), Unique:=True 'ダミーの見出し行削除 Rows(1).Delete 'D列をキーワードにA、B列を検索し、存在すればそれぞれE、F列に表示 DLastRow = Cells(Rows.Count, "D").End(xlUp).Row For c = 0 To 1 For r = 1 To DLastRow Set FindCell = Range("A1:A" & ALastRow).Offset(, c).Find(Range("D" & r)) If Not FindCell Is Nothing Then Cells(r, "E").Offset(, c).Value = Range("D" & r).Value End If Next r Next c '作業列のC,D列を非表示 Columns("C:D").Hidden = True End Sub
- esupuresso
- ベストアンサー率44% (257/579)
ワークシートメニューバーのツールからオプションをクリック→ リストの項目で並べたい順に入力します 例えば・・・ 赤 青 黄 白 ・ ・ のように縦に入力していきます 最後に「OK」をクリックしてワークシートメニューバーの「並べ替え」をクリック→ 下のオプションをクリック→ 並べ替え順序の指定の標準をクリックして一番下に出てくる赤、青、黄、白、・・・をクリック「OK」→ 「OK」で並べ替えが出来ます A列、B列に同時に並べ替えをしたいのでしたら両方の列をドラッグして並べ替えをクリックして操作してあげると同時に並べ替えができます