14歳の自分に衝撃の事実を告げてください

教えてください。
A列に入力した文字から右側のアルファベットのみ削除してB列に一括で表示させたいのですが何かいい方法はありませんか?
VBAについては初心者に近いので、できれば貼り付けするだけで使えると嬉しいです。

「エクセル関数またはVBAについて」の質問画像

A 回答 (5件)

ご質問者の掲出された画像のように、アルファベット+数字+アルファベット(末尾のアルファベットは無い場合あり)という形のデータがあり、末尾のアルファベットのみ消去したいということなら、B1セルに



=LEFT(A1,LOOKUP(1,0/ISNUMBER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),ROW(INDIRECT("1:"&LEN(A1)))))

という数式を入れて、下方向へコピーという方法はいかがでしょう?

この数式は文字列に数字が含まれることを利用して、最後の数字位置までの文字列を抽出するものです。
従って、例えば、「A_ B」とか、「A○C」というような数字を含まないデータがある場合は使用できません。
    • good
    • 0
この回答へのお礼

とりあえず今回はこれでいけたようです。
ありがとうございました。

お礼日時:2023/11/21 00:36

こんにちは



No3様の回答にあるフラッシュフィルが便利だと思いますが、ご例示の場合は1行目では法則性が解釈されないので、2行目からで処理することになってしまいますね。
機能を理解できていれば、これが一番簡単だと思います。


関数で行うなら・・
>右側のアルファベットのみ削除
「アルファベット」というのは半角英字のA-Zと解釈しました。
(以下では、小文字のa-zや全角の英文字は対象外としています)
B1セルに
=IFERROR(LEFT(A1,AGGREGATE(14,6,ROW(OFFSET(A$1,,,LEN(A1)))/(MID(A1,ROW(OFFSET(A$1,,,LEN(A1))),1)<"A")+("Z"<MID(A1,ROW(OFFSET(A$1,,,LEN(A1))),1)),1)),"")

を入力して、下方にフィルコピー。


VBAを利用してもよいなら、ユーザ定義関数で。
事前準備として下記のコードを標準モジュールにコピペの上、B2セルに
 =trimAlphabet(A1)
を入力して、下方にフィルコピー。

※ コードをそのまま投稿するとはじかれてしまうため、コピペする前に、3行目の「@」マーク(2か所)を削除してからコピペしてください。

Function trimAlphabet(ByRef s As String) As String
Dim RE
Set RE = C@reateO@bject("VBScript.RegExp")
RE.Pattern = "[A-Z]*$"
trimAlphabet = RE.Replace(s, "")
End Function
    • good
    • 1
この回答へのお礼

フラッシュフィルが理解できていればいいのですがよくわかりません。
色々と説明いただきありがとうございました。

お礼日時:2023/11/21 00:37

A1セルの値が「A10A」でB1セルに「A10」なら、


 「フラッシュ フィル」
で一発なんだけどねぇ。

B1セルに「A10」と入力して、B1セルを選択した状態で「フラッシュ フィル」を実行するだけ。

リボンの「ホーム」→「編集」の「フィル」の中に「フラッシュ フィル」がある。

・・・

この機能は
 「山田 太郎」
 「鈴木 一郎」
から「山田」「鈴木」だけを抜き出すことにも使える。
てか、それが一番の目的で使う機能。
    • good
    • 0
この回答へのお礼

つらい・・・

ありがとうございました。
やってみましたがパターンが見つかりませんでしたと変換できませんでした。

お礼日時:2023/11/20 11:08

1. B列の最初のセル(例: B1)を選択します。


2. 次に、以下の数式を入力します(A列のセルがA1から始まると仮定しています):


この数式は、A1セルのデータから数字のみを抽出してB1セルに表示します。

3. 入力が終わったら、Enterキーを押します。

4. B1セルに正しいデータが表示されたら、そのセルを選択し、右下の角をドラッグして必要なセル範囲までコピーします。

これで、B列にアルファベットと最初の数字のみが抽出されたデータが表示されるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
確かに数字のみの抽出は出来ましたがそれを必要な範囲までコピーしても数字のみの表示ではじめのアルファベットが表示されません。
あと一歩という感じでしょうか?

お礼日時:2023/11/20 11:11

=CONCAT(IF(ISNUMBER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),MID(

A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報