• ベストアンサー

関数の質問

記号 | 回答 5 | 1A 2 | 5B 1A1 | 5b 1A | 4Z 4 | 5J 7 | 5B | 5b | \ | a12 | 9 | 4Z | 1a1 | 6 | 5J | A12 | A列の一番右がアルファベットだったら B列に上詰めで抜き出すことは可能でしょうか? 作業列、フィルターは使用せずにお願いします。 宜しくお願い致します。 バージョン2010です

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

右1文字に半角英文字のあるデータを抽出するなら以下のような関数を入力して下方向にオートフィルします。 =INDEX(A:A,SMALL(INDEX(((CODE(UPPER(RIGHT(1&$A$2:$A$1000)))<65)+(CODE(UPPER(RIGHT(1&$A$2:$A$1000)))>90))*1000+ROW($A$2:$A$1000),),ROW(1:1)))&""

tackty
質問者

お礼

MackyNo1様 回答ありがとうございます。 こんな組み合わせがあるんんですね。 勉強になりました。 ありがとうございます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >作業列、フィルターは使用せずにお願いします。 手っ取り早くVBAにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, lastRow As Long lastRow = Cells(Rows.Count, "B").End(xlUp).Row If lastRow > 1 Then Range(Cells(2, "B"), Cells(lastRow, "B")).ClearContents End If For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row If Right(Cells(i, "A"), 1) Like "[A-Z a-z]" Then Cells(Rows.Count, "B").End(xlUp).Offset(1) = Cells(i, "A") End If Next i End Sub 'この行まで ※ 関数でないのでA列のデータ変更があるたびに マクロを実行する必要があります。m(_ _)m

tackty
質問者

お礼

tom04様 回答ありがとうございます。 LIKEってあるんですね。 勉強になりました。 ありがとうございます。

関連するQ&A