まだVBAはじめたばかりですがよろしくお願いします。
Excel2000を使ってます。以下のことをマクロで行いたいのですが
やり方がわかりませんので教えてください。
あるセル内に「11月15日[晴れ] ○○」という文字列がはいってます。
そのうち[晴れ]の部分だけ([部分から]部分までを)削除した文字列をその隣の
セルにコピーしたいのです。
よろしくご教授お願いします。

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

A 回答 (7件)

早とちりして間違えました。

以下に修正しました。

Public Function fKiridashi(moji As String)
  Dim pot1 As Integer, pot2 As Integer '[と]の位置

  pot1 = InStr(moji, "[")
  pot2 = InStr(moji, "]")
  fKiridashi = Left(moji, pot1 - 1) & Right(moji, Len(moji) - pot2)
End Function

Public Sub sKiridashi()
  Dim rg As Range 'セル
  Dim pot1 As Integer, pot2 As Integer '[と]の位置

  For Each rg In Selection
    pot1 = InStr(rg.Value, "[")
    pot2 = InStr(rg.Value, "]")
    rg.Offset(0, 1) = Left(rg.Value, pot1 - 1) & Right(rg.Value, Len(rg.Value) - pot2)
  Next
End Sub
    • good
    • 0
この回答へのお礼

nishi6様
大変早い対応ありがとうございます
1つのセルに複数の[]ないのものを削除であればループをすればできますよね?
ありがとうございました

お礼日時:2001/11/16 15:18

ユーザー定義関数とモジュールを書いてみました。

(VBAらしく???)

ユーザー定義関数は =fKiridashi(セル) とします。

マクロはセル範囲を選択して sKiridashi を実行します。
選択範囲の隣に「晴れ」とかを切りだします。選択範囲は連続でも飛び離れていてもかまいません。
ご参考に

以下は標準モジュールに貼り付けます。

Public Function fKiridashi(moji As String)
  Dim pot1 As Integer, pot2 As Integer ' [ と ] の位置

  pot1 = InStr(moji, "[") ' [ の位置
  pot2 = InStr(moji, "]") ' ] の位置
  fKiridashi = Mid(moji, pot1 + 1, pot2 - pot1 - 1)
End Function


Public Sub sKiridashi()
  Dim rg As Range 'セル
  Dim pot1 As Integer, pot2 As Integer ' [ と ] の位置

  For Each rg In Selection
    pot1 = InStr(rg.Value, "[")
    pot2 = InStr(rg.Value, "]")
    rg.Offset(0, 1) = Mid(rg.Value, pot1 + 1, pot2 - pot1 - 1)
  Next
End Sub

この回答への補足

nishi6様
ありがとうございます。
[]を含む中身を表示ではなく[]を含む中身を削除したものを表示させたいのです。
でもかなり参考になりました。
もうすこし挑戦してみます。

補足日時:2001/11/16 14:29
    • good
    • 0

こんばんは!



範囲がA2:A10であれば

Sub okikae()
Range("A2:A10").Select
Selection.Copy
Range("B2").Select
ActiveSheet.Paste
Selection.Replace What:="[*]", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

こんな感じでしょうか!
    • good
    • 0
この回答へのお礼

comv様 おはようございます
お答えいただきありがとうございます。
この方法でためさせていただいたのですがSelection.Replace以降のところで
エラーになってしまい止まってしまいます。
EXCEL2000では動作しないのでしょうか?
参考にさせていただきもう少し考えてみます。
もし、他にも方法がありましたらご教授お願いします。

お礼日時:2001/11/16 08:35

No.#3のRIO-Freakです。

すみません、訂正です。(No.#3の回答では、セルの指定を間違えた上に、日付の部分が"1月1日"とか"11月1日"とか4文字、5文字の場合、[ ]内が雨や曇りの場合に正しい結果が出ません。)

正しくは、

セルA2に「11月15日[晴れ] ○○」という文字列が入力されているとして、セルB2に

=LEFT(A2,FIND("日",A2))&RIGHT(A2,LEN(A2)-FIND("]",A2))

と入力すれば、

LEFT(A2,FIND("日",A2)) で『11月15日』の部分が取り出され、
RIGHT(A2,LEN(A2)-FIND("]",A2)) で『]』より後ろの部分(『 ○○』の部分。文字数は何文字でもOK)が取り出され、
"&"で結合されます。("&"はExcelで文字列を結合する時に使う演算子です。)

PS.
マクロで行いたいということですが、VBAの勉強のために敢えてマクロで処理したいということなのでしょうか?

この回答への補足

RIO-Freak様
お答えいただきありがとうございます。
また、わかりやすい回答ありがとうございます。
VBAの勉強のためにあえてマクロで行いたいのです。
私の言葉が足りなくて申し訳なかったのですが、
セルに「11月15日[晴れ] ○○[△△]」というように何個か『[ ]』で囲まれて
いる文字列があるのです。それをすべて取り除いたものを隣のセルにコピーしたいのです。そのような場合であればお答えいただいた方法でできますでしょうか?
FINDを利用して『[』部分を検索するのはわかったのですが・・・
よろしくお願いします

補足日時:2001/11/15 23:04
    • good
    • 0

マクロで行いたいということですが、文字列操作関数を使えば、マクロを組むまでもないかと思いますが・・・。



セルA2に「11月15日[晴れ] ○○」という文字列が入力されているとして、セルB2に

=LEFT(A1,6)&RIGHT(A1,LEN(A1)-10)

と入力すれば、

"LEFT(A1,6)"で『11月15日』の部分が取り出され、
"RIGHT(A1,LEN(A1)-10)"で『[晴れ]』より後ろの部分(『 ○○』の部分)が取り出され、
"&"で結合されます。("&"はExcelで文字列を結合する時に使う演算子です。)
    • good
    • 0

置換


【問題】
 B列に以下のように住所を入力しました。

大阪市天皇寺区○○○町一丁目
大阪市天皇寺区○○○町二丁目
大阪市天皇寺区△△△町三丁目

 1000位の住所を入力した後で、「天皇寺区」ではなく「天王寺区」が正しいこ
とに気がつきました。どうやって修正したら良いでしょうか?

大阪市天王寺区○○○町一丁目
大阪市天王寺区○○○町二丁目
大阪市天王寺区△△△町三丁目

【回答】
1.B列を選択
2.Ctrl+H (メニュー[編集]-[置換])
3.[検索する文字列] に 大阪市天皇寺区 と入力
4.[置換後の文字列] に 大阪市天王寺区 と入力
5.[完全に同一なセルだけを検索する] にチェックが入っていないことを確認して
[すべて置換]ボタンをクリック

【解説】
 [すべて置換]を実行する際は、一つのセルだけを選択しているかセル範囲を選択しているかで実行結果が異なります。

 一つのセルだけを選択している場合には、全てのセルが置換の対象になります。

 今回のように範囲を選択してから[すべて置換]を実行すると、その選択した範囲内が置換の対象になります。
    • good
    • 0
この回答へのお礼

PCboy様
回答ありがとうございます。
置換のことは存じておりましたが、VBAのマクロの勉強がてらしてみたかったので
質問してみました。
また、私の言葉が足らず申し訳ありませんでした。

お礼日時:2001/11/15 23:13

置換で文字列削除


【問題】
 B列に以下のように住所が入力されています。全て大阪市天王寺区の住所です。

大阪市天王寺区○○○町一丁目
大阪市天王寺区○○○町二丁目
大阪市天王寺区△△△町三丁目

 これを「大阪市天王寺区」を消して以下のようにするにはどうしたら良いでしょうか?

○○○町一丁目
○○○町二丁目
△△△町三丁目

【回答】
1.B列を選択
2.Ctrl+H (メニュー[編集]-[置換])
3.[検索する文字列] に 大阪市天王寺区 を入力
4.[完全に同一なセルだけを検索する] にチェックが入っていないことを確認して
[すべて置換]ボタンをクリック

【解説】
 上記手順では、[置換後の文字列] に何も入力しないで置換を実行しています。

 [すべて置換]を実行する際は、一つのセルだけを選択しているかセル範囲を選択しているかで実行結果が異なります。

 一つのセルだけを選択している場合には、全てのセルが置換の対象になります。

 今回のように範囲を選択してから[すべて置換]を実行すると、その選択した範囲内が置換の対象になります。
    • good
    • 0

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

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


人気Q&Aランキング

おすすめ情報

カテゴリ