• ベストアンサー

消去数字に該当する数字があれば消去して左に詰める

このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご遠慮ください。  私の質問が気に入らない場合は無視して頂ければ結構です。) 【質問】 添付図1のとおり、A1~AI6の6行×35列の中に数字が重複して入っています。また、消去数字がAM1~BD1に入っています。 消去数字に該当する数字が検索対象のA1~AI6の中にあれば、 その数字を消去してセルを左に詰める方法が知りたいです。 【注意事項】   ・消去数字と検索対象の数字は毎回異なります。   ・添付図には、説明文の補助的な意味で”途中”を載せてますが、    実際には、実行したら、いきなり、”結果”のようになれば    OKです。(一旦空白にしなくても消去数字と一致したら消去    されて最後に左側に詰まればokです。)   ・実現方法は、VBAでもその他方法でもかまいません。   ・使用するエクセルは2021です。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.2

すみません。全式は間違い。 A9: =TRANSPOSE(LET(a,TRANSPOSE(A1:AI1),FILTER(a,COUNTIF(AM$1:BC$1,a)=0))) 下へコピペ。

sazanami0422
質問者

お礼

早速の回答頂きありがとうございます。 早速、2つ目に頂いた回答を実際に試してみたところ、添付図の結果どおりになりました。ありがとうございます。また質問をみかけたら回答頂けるとありがたいです。

Powered by GRATICA

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

VBAだと以下で Sub Test() Dim i As Long, j As Long Dim tmpi As Long, tmpj As Long Dim mRng As Range Dim tmp(6, 35) As Variant tmpi = 0: tmpj = 0 For i = 1 To UBound(tmp, 1) For j = 1 To UBound(tmp, 2) Set mRng = Range("AM1:BD1").Find(Cells(i, j).Value, LookIn:=xlValues, LookAt:=xlWhole) If mRng Is Nothing Then tmp(tmpi, tmpj) = Cells(i, j).Value tmpj = tmpj + 1 End If If j = 35 Then tmpi = tmpi + 1 tmpj = 0 End If Next Next Range("A10").Resize(6, 35).Value = tmp End Sub

  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.1

A9: =TRANSPOSE(LET(a,TRANSPOSE(A1:AI1),FILTER(a,COUNTIF(AM$1:BC$1,a)))) 下へコピペ。

関連するQ&A