- ベストアンサー
未使用数字を抽出する方法
このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。 私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】 添付図のとおり、「①使う予定の数字」として、N1~BD1迄の 43個の数字。「➁使う数字」として、A1~J4までの40個の エリアに数字が入っています。①から➁を見て、「③残った数字」 をN3~に並べる方法が知りたいです。 VBAでもその他方法でも構いません。 【注意事項】 ・「①使う予定の数字」に入る数字は最大43個で、 重複無しです。 ・「➁使う数字」に入る数字は最大40個で、重複無しです。 ・「③残った数字」は、左から昇順に並んで欲しい。 ・「①使う予定の数字」、「➁使う数字」、「③残った数字」 は、説明のためにつけているだけです。 ・使用するエクセルは2021です。 以上、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
使う予定の数字に空白がないなら =FILTER(N1:BD1,COUNTIF(A1:J4,N1:BD1)=0) 使う予定の数字に空白がありうるなら =FILTER(N1:BD1,N1:BD1*(COUNTIF(A1:J4,N1:BD1)=0)) これだけのことがこれだけの関数でできる。 2021は便利ですね。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1733/2603)
回答No.1の記載忘れです。 N1から右にはシートの右端まで「使う予定の数字」以外のデータは無いものと考えています。 N3から右も同様にシートの右端までデータが無いものと考えています。 「使う数字」は数に関係なく質問の画像にある黒枠の範囲にA1から隙間なく記載されている前提で、黒枠の外周(K列と5行目)には数字は無いものと考えて Set fRng = Range("A1").CurrentRegion としています。 もし「使う数字」の範囲が上記の前提にあわない可能性がありましたら Set fRng = Range("A1:J4") として最大範囲に設定してください。
お礼
- kkkkkm
- ベストアンサー率66% (1733/2603)
VBAでしたら以下で試してみてください Sub Test() Dim i As Long, j As Long, LastCol As Long Dim mRng As Range, fRng As Range Set fRng = Range("A1").CurrentRegion j = Columns("N").Column For i = Columns("N").Column To Cells(1, Columns.Count).End(xlToLeft).Column Set mRng = fRng.Find(What:=Cells(1, i).Value, LookIn:=xlValues, LookAt:=xlWhole) If mRng Is Nothing Then Cells(3, j).Value = Cells(1, i).Value j = j + 1 End If Next LastCol = Cells(3, Columns.Count).End(xlToLeft).Column Range(Cells(3, "N"), Cells(3, LastCol)).Sort _ Key1:=Range("N3"), Order1:=xlAscending, Orientation:=xlSortRows End Sub
お礼