あなたの映画力を試せる!POPLETA映画検定(無料) >>

わかりやすく言いますと、A1セルに「トヨタ」と入力されてるとします。
この「トヨタ」の前に「株式会社」を入力し、後ろに「御中」を入力してA1セルを「株式会社トヨタ御中」にしたいんですが、やり方を教えてくださいましm(_ _)m
さんざんググったんですが分からなくて・・・

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

A 回答 (5件)

シート見出しで右クリックし「コードの表示」で表示された画面の右空白部に次のコードを入力します。



Sub 文字の修正()

If Range("A1").Find(What:="株式会社") Is Nothing Then
Moji = Range("A1").Value
Range("A1") = "株式会社" & Moji & "御中"
End If

End Sub
    • good
    • 2
この回答へのお礼

ありがとうございます!バッチリです!感謝感謝です!

お礼日時:2009/07/29 02:01

こんにちは。



>A1セルに「トヨタ」と入力されているとします。

前に「株式会社」を入力し、後ろに「御中」を入力するだけで、VBAマクロにするというのは、ありえません。手で入れれば済むものを、マクロにするほどのことではないと思います。

どういう状況でマクロにしなければならないのか、大量にあるとか、もう少し詳しく書かなければ、なんともいえません。自動に入れるというなら、#2さんの書式で処理するのが良いのではないかと思います。
    • good
    • 0

No.2です。


VBAの回答でなく失礼しました。

次の処理でどうでしょう。(文字列変数は任意の名前で)
(1)A1セルをアクティベートにします。
(2)アクティブセルの内容を文字列変数Xに代入します。
(3)アクティブセルに"株式会社" & X & "御中"を代入します。
    • good
    • 0

右クリック→セルの書式設定→表示形式のタブでユーザー定義を選択し、種類の所へ次の入力をします。



株式会社@御中

※@マークは半角です。
    • good
    • 1
この回答へのお礼

おお!ありがとうございます!エクセルにこんな機能があったとは!!!

お礼日時:2009/07/29 01:57

マクロ記録をとりましょう

    • good
    • 1

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

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

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

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

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

QマクロでExcelのセルに任意の文字列を追加するには?

Excel2003 を使用しています。

文字列の入ったセルに任意の文字列を追加するマクロを
作りたいのですが、どのように記述すればよいのでしょうか?

例えば、郵便番号に〒を文字列の頭に追加したい場合です。
元のセルに入力されている文字列が

111-1111

として、マクロで、

〒111-1111

と同じセルに追記したいのです。

ご助言の程、どうぞよろしくお願いします。

Aベストアンサー

With Range("A1")
  .Value = "〒" & .Value
End With
みたいな事ですか?

QExcel 文字列の前後に、特定の文字を付加したい

Excelで、ある列に不規則な文字列がならんでいます。
その文字列の前後に、いっせいに好きな文字を付加したいのです。
例えば、「AAA」という文字列の前後に
「BBBACCC」といったように
AAAといった文字列にBBBやCCCと一斉に付加したいです。
AAAはアルファベットや日本語等さまざまなのですが、
どうすればいいでしょうか?
教えてください。

Aベストアンサー

& で繋ぎます。

A1 セルの文字の前後に、ABC と DEF を付けたいなら、
別のセルに下記のような式を入れます。

="ABC" & A1 & "DEF"

QEXCEL VBA セルに既に入力されている文字に文字を追加する

EXCELでマクロを作成しています
ユーザーフォームを使用し、コンボボックスでセルを選択し、その選択したセルにテキストボックスから文字を入力できるようになっています。

選択したセルが空白ならそのままテキストボックスの文字を挿入し、
もし選択したセルにすでに文字が入力されている場合は、すでに入力されている文字+テキストボックスの文字、という風にしたいと思っています。
例:選択したセル  「ガソリン代」
  テキストボックス「高速代」
  → 『ガソリン代高速代』
 その次も同じセルを選択した場合  
  テキストボックス「電車代」
  → 『ガソリン代高速代電車代』
このような感じです。
文字をどこかに代入してテキストボックスの文字と&で結んで入れてやれば良いのかもしれませんがつまづいております。

ぜひ助けていただければうれしく思います
よろしくお願いします。

Aベストアンサー

#01です。
UserformにTextBox1(費目)とTextBox2(代金)とCommandButton1があるとします。費目はA1セルに、代金はB1セルに連結してゆくなら、こんな感じでしょうか。

Private Sub CommandButton1_Click()
  Range("A1").Value = Range("A1").Value & TextBox1.Value
  If Range("B1").HasFormula Then
    Range("B1").FormulaLocal = Range("B1").FormulaLocal & "+" & TextBox2.Value
  Else
    Range("B1").FormulaLocal = "=" & TextBox2.Value
  End If
End Sub

HasFormulaプロパティで「数式が入力されているか」を判断できます。数式がない場合は先頭に「=」をつけて数式にしています。
またTextBoxの値は文字列です。数字以外が入力されると式の答えは不正になりますからIsNumericなどを用いてチェックする方が良いでしょうね。

#01です。
UserformにTextBox1(費目)とTextBox2(代金)とCommandButton1があるとします。費目はA1セルに、代金はB1セルに連結してゆくなら、こんな感じでしょうか。

Private Sub CommandButton1_Click()
  Range("A1").Value = Range("A1").Value & TextBox1.Value
  If Range("B1").HasFormula Then
    Range("B1").FormulaLocal = Range("B1").FormulaLocal & "+" & TextBox2.Value
  Else
    Range("B1").FormulaLocal = "=" & TextBox2.Value
  End If
End Sub

HasForm...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QEXELで文字列の先頭に文字を挿入したい(置換)

EXEL2003です。
セルに文字列が並んでいます。
それの先頭にある文字を挿入するにはどうしたらよいのでしょうか?
「置換」で先頭とか、末尾を指定する方法がありますか?
よろしくお願いします。

Aベストアンサー

#01です。変換したい文字列のセル範囲が決まっているなら、#02さんの方法で補助セルに変換して、その結果を「コピー」→「値として貼りつけ」で書き戻す方法が良いと思います。

もしシート中の全ての「文字列」が入っているセルの先頭に「ある文字」を挿入するなら、以下のマクロになります。

Sub Macro4()
Dim r As Range
 For Each r In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 2)
  r.Value = "ある文字" & r.Value 'この行を修正
 Next r
End Sub

また「文字列」だけではなく「数値」も同様にするなら、SpecialCells(xlCellTypeConstants, 2)の数字を2→3に変更してください。

末尾に「ある文字」をつけたいのなら
r.Value = r.Value & "ある文字"
に変更してください。

マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はALT+F8を押して、マクロ名を選択します

マクロで変換した結果はUNDOで戻せませんので、シートはコピーしてから試してくださいね。

#01です。変換したい文字列のセル範囲が決まっているなら、#02さんの方法で補助セルに変換して、その結果を「コピー」→「値として貼りつけ」で書き戻す方法が良いと思います。

もしシート中の全ての「文字列」が入っているセルの先頭に「ある文字」を挿入するなら、以下のマクロになります。

Sub Macro4()
Dim r As Range
 For Each r In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 2)
  r.Value = "ある文字" & r.Value 'この行を修正
 Next r
End Sub

また「文字列」だけで...続きを読む

Q[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。

VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。
(例)
L列に、A、B、C、D、E、Fとランダムに文字が入っていて、
文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。

Sub Search()
Dim A As String
Set A = Worksheets("Sheet1").Cells.Find("A")
If A Is Nothing Then
ActiveCell.Offset(0, 1).Value = 0

End If
End Sub
と過去の質問で考えてみたのですが、Aがあった時、、、、
とコードが書けないです。
大変困っているので、ご教授頂けないでしょうか?
出来れば、そのままマクロに出来るコードを教えて頂けないでしょうか?
宜しくお願い致します。

Aベストアンサー

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表格が、この「Find」 です。

>Set A = Worksheets("Sheet1").Cells.Find("A")

>過去の質問で考えてみたのです

どうも、Find メソッドは、あるレベル以下の人は、省略する傾向があるようです。何が大事で、何が大事でないかというのは、やってみなければ分かりませんが、検索語だけを入れる書き方は、実務では、あまりしないほうがよいと思います。

だいたい、以下のTestFind2 ぐらいまでに、省略は、とどめたほうがよいです。

それは、Find は、必ずしも自分が思っているデフォルトとは違うことがあるので、「明示的(意図的に)」にオプションは入れたほうがよいです。
例えば、大文字小文字の違いを付けるなら、MatchCase:=True, 数式まで探すなら、LookIn:=xlFormulas

なお、Find メソッドは、5年経っても、たぶん完全に覚えられません。面倒なコードのひとつです。ですが、これはパターンが決まっているので、ひとつパターンが決まったら、それに当てはめればよいだけです。

#3さんで示されているMougのサンプルコードと似てはいるのですが、Mougのサンプルコードでは、Verionによって、失敗することがあります。

'--------------------------------------
'記録マクロをそのまま使う方法
Sub TestFind1()
Dim c As Range
 Set c = Columns("L:L").Find(What:="A", _
           After:=ActiveCell, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, _
           MatchCase:=False, _
           MatchByte:=False, _
           SearchFormat:=False)
 c.Offset(0, 1).Value = 0
End Sub
'--------------------------------------
'TestFind1 をアレンジしてみる
Sub TestFind2()
Dim c As Range
'検索語
Const MYTXT As String = "A"
 Set c = ActiveSheet.Columns("L:L").Find(What:=MYTXT, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           MatchCase:=False)
 If Not c Is Nothing Then
    c.Offset(0, 1).Value = 0
 End If
End Sub

'---------------------------------------
'複数ある場合(パターンを使った方法)
'---------------------------------------
Sub TestFind3()
  Dim c As Range
  Dim FirstAdd As String
  Const MYTXT As String = "A"
  Set c = ActiveSheet.Columns("L:L").Find( _
    What:=MYTXT, _
    LookIn:=xlValues, _
    LookAt:=xlPart, _
    MatchCase:=False)
  
  If Not c Is Nothing Then
    FirstAdd = c.Address
    Do
      c.Offset(, 1).Value = 0
      Set c = ActiveSheet.Columns("L:L").FindNext(c)
      If c.Address = FirstAdd Then Exit Sub
    Loop Until c Is Nothing
  End If
End Sub

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

Aベストアンサー

#2さんと似たものですが・・・・参考にしてください。

Sub test001()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 2) = Cells(i, 1)
i = i + 1
Loop
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

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を見た人がよく見るQ&A

人気Q&Aランキング