ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

こんにちわ。

「特定の文字列より前の文字列を抜き出す(文字数固定)」を質問させてください。

例)
あいうS01234(Backup)
かきS10233(Backup)
さしすせそS0223(Backup)

といったデータがあります。
隣のセルにSから始まる数字(Sを含む5文字分)を抜き出すことは可能でしょうか。

*文中に、どこからS****が入るかばらばら
*抜き出したい文字列は半角で必ずSから始まり、数字4文字
*抜き出したい文字列(Sと数字をあわせ5文字)の後ろに必ず”(Backup)”がつく
*Sから始まる数字の4文字は必ず0から始まるが、その後の数字3桁はユニーク

どなたか、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

》 *抜き出したい文字列(Sと数字をあわせ5文字)


》 *Sから始まる数字の4文字は必ず0から始まる

=MID(A1,FIND("S0",A1),5)

この回答への補足

こんにちわ。

回答ありがとうございました。
こちらのやり方でもできました。

計算式が短いので、助かります。

ありがとうございました。

補足日時:2009/05/29 23:49
    • good
    • 0

>抜き出したい文字列(Sと数字をあわせ5文字)の後ろに必ず”(Backup)”がつく


この部分から察するに計算式は・・・
「B1=MID(A1,FIND("S",A1),LEN(A1))」 とする事により「S01234(Backup)」が返ります

この回答への補足

こんにちわ。

回答ありがとうございます。

試したところ教えていただいたとおりになりますが、
今回は「(Backup)より前」ということで質問させて
いただきました。

教えていただいた計算式は別の機会に使わせていただきます。
ありがとうございました。

補足日時:2009/05/29 23:43
    • good
    • 0

>特定の文字列より前の文字列を抜き出


>Sから始まる数字(Sを含む5文字分)を抜き出すことは
は矛盾して無いか。
なんにしろ目安になる文字はFIND関数で見つけられる。
GoogleででもFIND関数を勉強して、自分で考えること。
>試してみたところ、できました!
関数の種類とその利用法を勉強不足で、知らないだけ。FIND関数は基礎的な関数ですよ。
http://maglog.jp/excel/Article484579.html
には乗っていないがおかしい。
http://trendy.nikkeibp.co.jp/article/lecturetop/ …これなどを、暗記するぐらい勉強しないと、エクセル関数を自由に使えない。
    • good
    • 0

提示された例では、さしすせそS0223(Backup)しか


> *抜き出したい文字列(Sと数字をあわせ5文字)の後ろに必ず”(Backup)”がつく
に反して数字だけで5文字あり、Sとあわせると6文字になるのですが・・・。

まあ (Backup)の前の5文字だけ抜き出すのなら
=MID(A1,FIND("(Backup)",A1)-5,5)
です。Sのあとで検索すると、数字の直前のS以外にSがあるとまずいので。

この回答への補足

こんにちわ。

>Sとあわせると6文字になるのですが・・・。
すみません、表記ミスでした。

教えていただいたやり方でできました!
FIND関数は今まで使ったことがなかったので
いろいろと活用したいと思います。

ありがとうございました。

補足日時:2009/05/29 23:46
    • good
    • 0

>*抜き出したい文字列(Sと数字をあわせ5文字)の後ろに必ず”(Backup)”がつく


が条件なら
=MID(A1,FIND(A1,"(Backup)")-5,5)
が一番楽では

この回答への補足

こんにちわ。

回答ありがとうございます。

質問文中に「必ず(Backup)がつく」とあったので
こちらも参考になりました。

ありがとうございました。

補足日時:2009/05/29 23:52
    • good
    • 0

》 *Sから始まる数字の4文字は必ず0から始まる…



でも、示された例の一つ「かきS10233(Backup)」はソレと矛盾しませんか?シッカリしてください。

この回答への補足

こんにちわ。
>シッカリしてください。
すみません、表記ミスでした。

補足日時:2009/05/28 23:17
    • good
    • 0

A1に文字列があるとき


 =MID(A1,FIND("S",A1),5)
をB1に貼り付ければ抽出が可能です。下方向にコピーしてください
例)
A列              B列
あいうS01234(Backup)  S0123
かきAS0123         S0123
010S1234(Backup)     S1234

ただしこの式では文字列中に「S」がないとエラーになります。
エラーにならないようにするには式を以下に変えてください。
 =IF(ISNUMBER(FIND("S",A1)),MID(A1,FIND("S",A1),5),"")

この回答への補足

こんにちわ。

試してみたところ、できました!
回答ありがとうございました。

最初の質問で書き漏れてしまったのですが、
「特定の文字より前」ということで、この場合”(Backup)”
という文字列の前から5文字分(Sを含め5桁)をしたいのですが
可能でしょうか。

補足日時:2009/05/28 23:25
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelのシートでメールアドレスの@より前を抽出するやり方を教えてください。

Excel上で、メールアドレスの@マークより前を他の列に抜き出したいのですが、やり方が分かりません。
どの関数を使えばいいのでしょうか?
どなたかお知恵を貸してください。
どうぞよろしくお願いします。

Aベストアンサー

A1にアドレスが入力してあるとして、

=LEFT(A1,FIND("@",A1)-1)

QExcel VBA:特定の文字列以降(あるいは以前)のテキストをすべて取得する方法

任意の長さのテキスト文があるとします。
str0 = "今日の天気は晴れです。"
この文で、「天気は」という文字列以前、あるいは以降の文をすべて取得するにはどうしたらよいでしょうか。

最終的な目的は「晴れ」という文字列を抜き出したいだけですので、別の方法があればそちらでも構いません。ただし、その文に「晴れ」という文字が入っているかどうかは取得前は不明ですので、「晴れ」を検索語にする方法ではありません。また、「天気は」、「です。」の文字は確実に文章に含まれているのですが、何文字目にあるかということも不明の場合を想定しています。

次のようなプロセスを考えています。
1.str0から「天気は」以降の文を取得 → str1 = "晴れです。"
2.str1から「です。」以前の文を取得 → str2 = "晴れ"

Aベストアンサー

お早うございます。

こんな感じで如何でしょうか。

Sub 文字列取得()
  Dim str0    As String
  Dim str1    As String
  Dim str2    As String
  Dim wFindStr  As String
  '
  str0 = "今日の天気は晴れです。"
  
  'str0から「天気は」以降の文を取得
  wFindStr = "天気は"
  str1 = Mid(str0, Len(wFindStr) + InStr(1, str0, wFindStr))
  '
  'str1から「です。」以前の文を取得
  wFindStr = "です。"
  str2 = Left(str1, InStr(1, str1, wFindStr) - 1)
End Sub

Qエクセルで、指定した文字の左側にある文字列を抜き出しをしたい。

エクセルで条件を指定した文字列の抜き出しをしたいです。

取引先一覧表があるのですが、その中の会社名が、
「○○株式会社 ▲営業部」というように登録しています。

それを、文字列の中に「株式会社」と入っている場合、
「株式会社」の左側にある文字列を抜き出したいのです。

エクセルでそのような処理はできますでしょうか。

*取引先一覧の中には「有限会社」や「株式会社」が右側についているものもありますが、それはそれぞれフィルタで抽出しながら処理をしようと考えています。

Aベストアンサー

A1以下にデータがあるとして

=LEFT(A1,FIND("株式会社",A1,1)-1)
で、下まで式をドラックすれば「株式会社」の左側にある文字列を抜き出せます。

もし、「株式会社」が先頭についているものの右側部分も一緒にとりだすなら
=IF(LEFT(A1,FIND("株式会社",A1,1)-1)="",RIGHT(A1,LEN(A1)-FIND("株式会社",A1,1)-3),LEFT(A1,FIND("株式会社",A1,1)-1))
かな。

Qエクセルのセルの中の,よりも前の文字を消すには?

例えばA1のセルに"1,apple"、A2のセルに"2,orange"といった感じで
下へ何個も箇条書きのような文字の入ったセルがA列に続いているとします。
この場合関数などを使い、,の前の数字を,ごと消してしまう方法はありますか?

例えばA1のセルに"1,apple"なら、"apple"に変更するといった感じです。

Aベストアンサー

次の方法は如何でしょうか。
(1)A列を選択→編集→置換
(2)検索文字列欄に*,(半角) 置換文字列欄は未入力→すべて置換

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QEXCELで、特定の文字を含むセルを抽出したいのですが。

仕入れ帳のようなシートで、B列に商品名があります。
商品名に特定の文字(数字又は文字)を含む時、空白列のC列に、その文字を抽出する方法をご教示ください。B列の商品名は変化させずにです。
意図は、当シート内で並べ替えをする時に、C列をキーとするためです。
商品名が、各種文字と数字で構成されており、そのままでは、希望する並べ替えができないのです。
宜しくお願い致します。

Aベストアンサー

「IF」関数、「ISERR」関数、「FIND」関数を組合せれば可能ですね。
たとえば、文字「a」を検索するなら、B2セルを対象として、C2セルに、

=IF(ISERR(FIND("a",B2)),"","aが入っています")

と入れます。

注意事項として、アルファベットを検索する場合、大文字と小文字を区別します。
つまり、上の例ではB2セルに「a」があれば、「aが入っています」、と表示されますが、「A」では表示されません。
(「FIND」を「SEARCH」にすれば「a」・「A」どちらでも表示される)

Qエクセル 数値だけ抽出するには?

エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか?
文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。
A列からb列のように変換したいのです。

A列          B列
PMID:_12345678    12345678
PMID:_123456     123456

宜しくお願いいたします。

Aベストアンサー

B1に
VALUE(REPLACE(A1,1,6,""))
でよいでしょう.

数値の桁数には依存しません.


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

人気Q&Aランキング