出産前後の痔にはご注意!

こんにちは。
エクセルのセルに
山田太郎(北海道札幌市)
鈴木次郎(沖縄県沖縄市)
のようなデータがありまして、名前の部分だけを残して括弧で囲まれた文字と括弧を削除したいのです。

削除前・・・山田太郎(北海道札幌市)
削除後・・・山田太郎

括弧だけを削除するのでしたら"(" と ")"を空白に置換すれば一括して削除できると思うのですが、括弧の中に入っている文字がバラバラですので一括して置換する事もできず困っています。
何か良い方法ありましたらどうかアドバイスお願いいたします。

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

A 回答 (2件)

少し面倒な方法かもしれませんが、



エクセルのデータの入ったシートを
テキスト(タブ区切り)形式で名前をつけて保存します。

再び その保存したファイルを
エクセルで開きます。

テキストファイルウィザードが開きますので
1枚目は 何もさわらず 次へ
2枚目で 区切り文字の その他 にチェックをいれて
その横の空欄に ( と入力して 開けば
( のあとが 違う列になります。
それで その列を削除して エクセル形式で
保存してはいかがでしょう?
    • good
    • 1
この回答へのお礼

質問してすぐに教えて頂いてびっくりしました。大変便利な方法でありがとうございます。

お礼日時:2006/06/20 21:51

検索置換範囲をマウスで先に指定してから


検索欄に (*)
置換欄に 何も入力せず

でOK
いきなりやると、不安なので
2、3行でためしてから。
    • good
    • 1
この回答へのお礼

どの本にも載ってないようなテクニックをご存じで凄いですね。ありがとうございます。

お礼日時:2006/06/20 21:51

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

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

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

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

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

QExcelでセル内の不特定位置の()内の文字を削除する方法について

Excelにおいて、Substitute関数で検索文字列に(*)と入力しましたが反映されませんでした。
データ量が多いため可能ならば関数やマクロ?といったもので出来ないだろうかと考えています。


やりたいことはシート1のデータをシート2で読み出した際に不特定な場所に位置する()内の文字を空白にすることです。

例として
   シート1      シート2
I ( like ) my dog. → I ( ) my dog.
He loved ( her ). → He loved ( ).



何文字目以降を~といったLEFTなどでも処理が出来なさそうで、正直手詰まりの状態です。
宜しければ、ご助力のほうよろしくお願いします。

Aベストアンサー

No.2です。

>「消した文字数+2」の空白を入れたいです。
とありますが、質問文のサンプルそのものに半角スペースが入っていますよね?
Excel的にはスペースも1文字ですので、
( )に囲まれた文字数分だけ半角スペースにする!という方法にしてみました。

数式でやると
=SUBSTITUTE(REPLACE(Sheet1!A1,FIND("(",Sheet1!A1)+1,FIND(")",Sheet1!A1)-FIND("(",Sheet1!A1)-1,"#"),"#",REPT(" ",LEN(Sheet1!A1)-LEN(SUBSTITUTE(REPLACE(Sheet1!A1,FIND("(",Sheet1!A1)+1,FIND(")",Sheet1!A1)-FIND("(",Sheet1!A1)-1,"#"),"#",""))))
といった感じの長い式になってしまいました。

今回はVBAの方が簡単かもしれません。

Sub Sample2()
Dim i As Long, k As Long, wS As Worksheet
Dim str As String, buf As String
Set wS = Worksheets("Sheet2")
wS.Range("A:A").ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "(") > 0 And InStr(.Cells(i, "A"), ")") > 0 Then
For k = InStr(.Cells(i, "A"), "(") + 1 To Len(.Cells(i, "A"))
str = Mid(.Cells(i, "A"), k, 1)
buf = buf & str
If str = ")" Then Exit For
Next k
buf = Left(buf, Len(buf) - 1)
wS.Cells(i, "A") = Replace(.Cells(i, "A"), buf, WorksheetFunction.Rept(" ", Len(buf))) '★
buf = ""
Else
wS.Cells(i, "A") = .Cells(i, "A")
End If
Next i
End With
End Sub

※ コード内の「★」の部分で文字数を指定しますが、
とりあえず元データにある前後の半角スペースも1文字とみなしていますので
セル内の文字数そのものは元データを変わっていません。m(_ _)m

No.2です。

>「消した文字数+2」の空白を入れたいです。
とありますが、質問文のサンプルそのものに半角スペースが入っていますよね?
Excel的にはスペースも1文字ですので、
( )に囲まれた文字数分だけ半角スペースにする!という方法にしてみました。

数式でやると
=SUBSTITUTE(REPLACE(Sheet1!A1,FIND("(",Sheet1!A1)+1,FIND(")",Sheet1!A1)-FIND("(",Sheet1!A1)-1,"#"),"#",REPT(" ",LEN(Sheet1!A1)-LEN(SUBSTITUTE(REPLACE(Sheet1!A1,FIND("(",Sheet1!A1)+1,FIND(")",Sheet1!A1)-FIND("(",Sh...続きを読む

Qセル内文章の特定の文字で囲まれた部分のみを抜き出す方法

Excelのセル内に文章が入っております。
その中から、特定の文字列で囲まれた部分のみを
別のセルに抜き出す関数はございますか?

例えば、「こんにちは、○~~~~~○それではまた。」の
○と○で囲まれた部分を抜き出す方法です。

お手数ですが、どなたかご存知の方がいらっしゃいましたら
教えていただきますよう、よろしくお願いいたします。

Aベストアンサー

=MID(A1,SEARCH("○",A1,1)+1,SEARCH("○",A1,SEARCH("○",A1,1)+1)-(SEARCH("○",A1,1)+1))

文字列がA1にあるとしてこれでどうですか?

QWordでカッコで括った文字を一括削除

Word98を使っているのですけど、カッコなどで括った文字を一括して削除する方法ってありますか?
たとえば、(○×△…)、(×▲○…)、(□○…)を一括して削除するとか、
<○×▲…>、<×▲…>、<■○…>を一括して削除するという意味です。

Aベストアンサー

こんにちは

 以下の手順でいかがでしょうか?

1.Ctrl+H (メニュー[編集]-[置換])
2.[ワイルドカードを使用する]にチェック
3.[検索する文字列]に (*)を入力
4.[すべて置換]ボタンをクリック

 全角のカッコであれば、[検索する文字列]に以下、

(*)
<*>

 半角のカッコの場合には、[検索する文字列]に以下を入力します。

\<*\>
\(*\)

 <,( のようにワイルドカードとして定義された文字を置換するには、文字の前に円記号 \ をつける必要があります。

参考URL:http://www2.odn.ne.jp/excel/

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エクセルの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列      A列
12345     123
67890     678
01234  ⇒  012
56789     567
98765     987

ようは、右側の2文字などを指定して削除をする方法です。

少し説明が分かり辛いかもしれませんが、もし、分かりましたら、ご教授いただければ、幸いです。

どうぞ、宜しくお願い致します。

Aベストアンサー

右側の2文字を削除するなら、セルA1に文字が入っているとき
=LEFT(A1,LEN(A1)-2)
とすれば、取り出せます。
「LEFT」関数は文字列の左側から指定文字数分取り出す関数。
「LEN」関数は、指定文字列の長さを計算してくれる関数です。
なので、左側から「文字数-2」文字取り出せば質問のとおりになります。

Qエクセルのセル内から数字だけを抽出する方法を教えて下さい

エクセルのセル内から数字だけを抽出する方法を教えて下さい
あるデータの列(備考欄)には様々な文字が入っていて、
その中に●名(●は数字)が入っています その数字だけを取り出して
別の列に移す関数を教えて下さい
※この列には他の数字は入っていません、最大で2ケタです

よろしくお願いします

Aベストアンサー

セル内の文字列の中に2桁までの数字が入っている場合に、その数字部分を抽出したいなら以下のような数式になります。

=MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890)),1)&IF(ISNUMBER(MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1),MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1,"")

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

Q【Excel】特定の文字から文字までの間を削除する

こんにちは

セルに、
[ABC]《あいうえお》1234

と、書いてあります。

別のセルに、
[ABC]1234

のように、この《》で囲まれた部分と《》を削除したいのですが、
どのようにしたらよいでしょうか。
《》の中の文字数や、前後の文字数はさまざまです。

Excel2013です。
よろしくお願いします。

Aベストアンサー

>別のセルに、《》の中の文字だけ抜き出すような式も可能でしょうか。

その前に、未入力の対応も含めて、前回の式は、

=IFERROR(LEFT(A1,FIND("《",A1)-1)&RIGHT(A1,LEN(A1)-FIND("》",A1)),"")

の方がいいでしょう。



「あいうえお」を抜き出すには、

=IFERROR(MID(A1,FIND("《",A1)+1,FIND("》",A1)-FIND("《",A1)-1),"")

とします。


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

人気Q&Aランキング