プロが教えるわが家の防犯対策術!

Excelについて質問です。
例えば、あるセルに「I have a pen」と入力されていたら「I h a p」となるように、あるセルに入力された英文に含まれる単語の頭文字を抽出したいのですが、何か良い方法はありますか?

A 回答 (5件)

Excelのバージョンを書いていないので 最新という前提で回答します。


=TEXTJOIN(" ",,LEFT(FILTERXML(SUBSTITUTE("<a><b>"&A1&"</b></a>"," ","</b><b>"),"//b")))

Microsoft365なら Enter確定
Excel2019なら Ctrl + Shift + Enterで確定
    • good
    • 0

あちゃ^


間違いを訂正します。
ユーザー定義関数を作るの
ary = Split(CEL, " ") を ary = Split(CEL, delimiter) にしてください。
    • good
    • 0

こんにちは、


既に関数で処理をする場合の回答が出ていますが、

対象の文字(半角スペース)数だったり、
同じセルに対して解を出したり、、色々考えると
手っ取り早く 例としてVBAで行う方法を書きます。

Sub sample()
Dim ary As Variant, i As Integer, ans As String
    ary = Split(ActiveSheet.Range("A1"), " ")
    For i = 0 To UBound(ary)
      If ans = "" Then
        ans = Left(ary(i), 1) & " "
      Else
        ans = ans & Left(ary(i), 1) & " "
      End If
    Next
    ans = Left(ans, Len(ans) - 1)
    ActiveSheet.Range("B1") = ans
End Sub

考え方
セルの値をVBAのSplit関数で半角スペースを区切りに配列に入れる
配列の要素分ループを行いLeft(ary(i), 1)で各要素の左側1文字を取得して
文字列型変数に代入し、すべてを取得したら不要な右についてる半角スペースを除き、セルに書き出します。
上の例は、A1セルの内容をB1セルに書き出しています。

例にあるB1をA1にすると同じセルに書き替える事も出来ます。

さらに、ユーザー定義関数を作る事も出来ます。 
例として下記を作成して、、導入の仕方は参考に https://valmore.work/excel-vba-function/

Function mySplit(CEL As String, delimiter As Variant, length As Integer) As String
Dim ary As Variant, i As Integer, ans As String, n As Integer
  ary = Split(CEL, " ")
  For i = 0 To UBound(ary)
    If Len(ary(i)) < length Then
      n = Len(ary(i))
    Else
      n = length
    End If
    If ans = "" Then
      ans = Left(ary(i), n) & " "
    Else
      ans = ans & Left(ary(i), n) & " "
    End If
  Next
  ans = Left(ans, Len(ans) - 1)
  mySplit = ans
End Function

解を求めたいセルに =mySplit(A1," ",1)
mySplit(対象のセル,区切り文字,左からの抽出文字数)

これらの方法もExcelにある機能ですので興味があれば、参考にされてください。
    • good
    • 0

添附圖參照(Excel 2019)



Sheet2 に於いて、A列は空白の儘に放置プレー⇒
式 =IFERROR(FIND(" ",Sheet1!$A1,A1+1),"") を入力したセル B1 を右方及び下方にズズーッとオートフイル⇒Sheet3 に於いて、
式 =IFERROR(MID(Sheet1!$A1,Sheet2!A1+1,1),"") を入力したセル A1 を右方及び下方にズズーッとオートフイル⇒Sheet1 に於いて、
式 =TEXTJOIN(" ",,Sheet3!A1:P1) を入力したセル B1 を下方にズズーッとオートフイル
「Excelについて質問です。 例えば、あ」の回答画像2
    • good
    • 0

こんにちは!



別セル表示で良いのであれば・・・
一例です。
↓の画像ではB2セルに
=IFERROR(MID($A2,FIND("#",SUBSTITUTE(" "&$A2," ","#",COLUMN(A1))),1),"")

という数式を入れフィルハンドルで右へコピーしています。

※ 1セル内に収めたい!という場合はVBAであれば可能です。m(_ _)m
「Excelについて質問です。 例えば、あ」の回答画像1
    • good
    • 1

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

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング