[[20220804170217]] 『右列を左に合わせて並べかえる』(沖) ページの最後に飛ぶ

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

 

『右列を左に合わせて並べかえる』(沖)

【A列】【B列】

  鈴木  佐藤
  佐藤  高橋
 田中  鈴木
 高橋

を以下のようにしたいのですが

【A列】【B列】

 鈴木  鈴木
 佐藤  佐藤
 田中
 高橋  高橋

関数やマクロで可能でしょうか?
行が大量にあるため、簡単に出来る方法を探しております。

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


 A列にないデータがB列にあった場合はどうするのだろうか?
 あと、関数でもということは元とは別の場所に結果を求めるということでいいのだろうか?
(ねむねむ) 2022/08/04(木) 17:22

ねむねむ様

ありがとうございます。
ご質問に対応するよう少し内容を変更しました。

【A列】【B列】

  鈴木  佐藤
  佐藤  高橋
 高橋  鈴木
 田中  後藤

【A列】【B列】

  鈴木  鈴木
  佐藤  佐藤
 高橋  高橋
 田中  
     後藤

のように、対応しないワードは下部に寄せられれば助かります。
また結果を表示する場所は、別列でも、その列を入れ替える形でもどちらでも問題ありません。
(沖) 2022/08/04(木) 17:31


 Sub test()
    Dim dic As Object
    Dim c As Range
    Dim s As String

    Set dic = CreateObject("scripting.dictionary")

    For Each c In Columns(1).SpecialCells(xlCellTypeConstants)
        s = c.Value
        dic(s) = IIf(Application.CountIf(Columns(2), s), s, Empty)
    Next
    For Each c In Columns(2).SpecialCells(xlCellTypeConstants)
        s = c.Value
        dic(s) = s
    Next
    Columns(3).Resize(dic.Count) = Application.Transpose(dic.items)

 End Sub

(マナ) 2022/08/04(木) 20:28


てきとうです(C1にいれて、下にコピー)。

 =IF(A1<>"",IF(COUNTIF(A:A,B1),A1,""),INDEX(B:B,AGGREGATE(15,6,ROW($A$1:$A$1000)/(NOT(COUNTIF(A:A,$B$1:$B$1000))),ROW()-COUNTA(A:A)))&"")

(わからん) 2022/08/05(金) 08:30


コメント返信:

[ 一覧(最新更新順) ]


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