• ベストアンサー

VB6で特定の数字の部分だけを変更したい

Excel2000のマクロでプログラムを組んでいます。 よろしくお願いします。 「DA21」や「DA30」という文字と数字が混じっている状態で 各数字の部分を1つだけ引いた状態にしたいのですが、 「DA」という文字の後ろにある数字だけ変えたい場合、 どのようなプログラムになるのか教えてもらえないでしょうか? 例: DA21 → DA20 DA30 → DA29

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

NO3です キー記録で作ってみました。 Sub Macro1() Range("A1").Select Selection.Insert Shift:=xlDown Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("A1").Select ActiveSheet.Paste Range("A2").Select Selection.End(xlDown).Select Selection.ClearContents End Sub これでどうでしょうか

takagoo100
質問者

お礼

ご返答ありがとうございます。 できました!ありがとうございます。 自分の想像してたプログラムコードと違ってたので驚きましたが、 それはこれから調べたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#140971
noname#140971
回答No.4

Excel は一度も操作したこともない門外漢ですが・・・。 横から、チクッと失礼。 [イミディエイト] ? SelectMoji("DA20") & Trim(Str$(SelectSuji("DA20") - 1)) DA19 ? SelectMoji("DA30") & Trim(Str$(SelectSuji("DA30") - 1)) DA29 と、まあ、ここはシコシコと SelectMoji 関数、SelectSuji 関数を作ったらどうでしょう。 Option Explicit Public Function SelectMoji(ByVal Text As String) As String   Dim I As Integer   Dim L As Integer      L = Len(Text)   For I = 1 To L     If InStr(1, "0123456789", Mid$(Text, I, 1), vbTextCompare) > 0 Then       Exit For     End If   Next I   SelectMoji = Left$(Text, I - 1) End Function Public Function SelectSuji(ByVal Text As String) As String   Dim I As Integer   Dim L As Integer      L = Len(Text)   For I = L To 1 Step -1     If InStr(1, "0123456789", Mid$(Text, I, 1), vbTextCompare) = 0 Then       Exit For     End If   Next I   SelectSuji = Right$(Text, L - I) End Function

takagoo100
質問者

お礼

ご返答ありがとうございます。 この関数でだいぶ考えを進めることができました。ありがとうございます。 ただせっかくお答えして頂いて申し訳ないのですが、 ANo.2の補足の質問について、もう一度お考え頂けないでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

頭2文字が文字・後の2文字が数字であることが確実であれば Function henkan(ByVal vstr As String) As String henkan = Left(vstr, 2) & Right("00" & Val(Right(vstr, 2)) - 1, 2) End Function でいけると思います。

takagoo100
質問者

お礼

ご返答ありがとうございます。 せっかくお答えして頂いて申し訳ないのですが、 ANo.2の補足の質問について、もう一度お考え頂けないでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

#1です。 もしかしたらすでに入力済みのデータに対してということでしょうか? だとした場合前記回答では対応していません。 新規に作成する場合の方法となります。 既存である場合は入力済みで数字の位置が固定なら簡単にできます。 既存データが A1 ~ A99 のセルに入力されている場合。 値が DDnn ( nnは数字部分 1~99) であるなら。 新しいセル B1 に次のように入力してください。 =LEFT(A1,2) & "01" もし"01" 部分を変化させたいというなら 任意のセルの値から 加算、減算するなりすれば大丈夫です。 たとえば 既存データ A1 の値から1を加算するなら =LEFT(A1,2) & RIGHT("00" & RIGHT(A1,2) + 1,2) でできます。 _____________________________ 既存データの加工について VBAマクロで行う場合は以下のマクロを使用してください Sub TEST2マクロ() Dim I As Integer Dim STRwk As String Dim MOJI As String For I = 1 To 99 MOJI = Worksheets("Sheet1").Range("A" & I).Value STRwk = Left(MOJI, 2) & Right("00" & Right(MOJI, 2) + 1, 2) Worksheets("Sheet1").Range("B" & I).Value = STRwk Next I End Sub

takagoo100
質問者

補足

ご返答ありがとうございます。 すいません、数字の部分は2桁や3桁の場合もありました・・・ なんで例でもっといろんなパターンを示さなかったのか 今になって後悔しています・・・ これだけ分かれば全部できると思っていましたが、 実際考えてみたら想像以上に複雑だったので 改めて全部具体的に示しますので、お手数ですがもう一度お答え頂けないでしょうか? よろしくお願いします。 例: A1のセルの数式に =IF(Data!B2>1,Data!B2,"")          ・          ・          ・ A10のセルの数式に =IF(Data!B11>1,Data!B11,"")          ・          ・          ・ A100のセルの数式に =IF(Data!B101>1,Data!B101,"") となっています。そこでセルの数式を IF(Data!B2>1,Data!B2,"") なら IF(Data!B1>1,Data!B1,"") IF(Data!B101>1,Data!B101,"") なら IF(Data!B100>1,Data!B100,"") と同じセルに(A1ならA1に)置換したいです。 これをVBAマクロで行いたいです。

全文を見る
すると、全ての回答が全文表示されます。
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

結果はどこに出力するのでしょうか? Excel の CELL なら VBAを用いずに次のようにしてください A1 セルに1を入力 A2 セルに =A1+1 を入力 A2 セルの右隅をマウスで右クリックしながら下まで下ろす。 値が自動的に入ります。 A1~A999 セルの書式にて文字色を白くします。 B1 セルに次のように入力します。 ="DD" & right("00" & A1,2) と入力します。 A1 セルの右隅をマウスで右クリックしながら下まで下ろす。 値が自動的に入ります。 _____________________________________________________ VBA で 行うには 以下のコードを 標準モジュールに貼り付けてから マクロを実行してください。 Sub TESTマクロ() Dim I As Integer Dim STRwk As String For I = 1 To 99 STRwk = "DD" & Right("00" & I, 2) Worksheets("Sheet1").Range("A" & I).Value = STRwk Next I End Sub ___________________________________________________________ 以上

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字だけ残して数字だけ消す

    Excel2003 VBAで文字だけを残して数字だけを消す方法を色々と考えたのですが 上手くマクロが作れずにおります。 例として、 A列    B列  C列 7月1日  東京  ABCDEF123456GHIJK のような、C列の部分のみ、文字と文字の間にある数字の部分だけを消したいのです。 理想的な結果としては 7月1日 東京 ABCDEFGHIJK という状態にしたいのですが可能でしょうか? ctrl+Gでは、全部消えてしまって困っています。 以上、宜しくお願いします。

  • 文字列から「任意の数字+特定の文字」を探す

    VBA マクロ操作なのですが、ある文字列中に「任意の数字+特定の文字」があればそこで分離、というコードを作りたいと思っています。 具体的には Cells(1,1)=24-15[5,5-[- ↓ ”5[”で分離 Cells(1,1)=24-15 他には Cells(1,1)=2[-1  → 2 Cells(1,1)=6[[-[1[   → 6[[-[1 Cells(1,1)=7-[-1  → 7-[-1 という結果を得たいと思っています。 ”数字+[ "となっている部分を探したいのですが、文字である" [ "は指定できますが数字が何かは不明です。 ”数字+[ "がない場合もありその時は分離しません。 よろしくお願いします。

  • 塗りつぶしの部分数字打てず

    エクセルXP.ですが、塗りつぶしの部分だけ数字打っても、うすく白くでるだけ。塗りつぶし解除するとなにもでず。 白い文字で打ってるようです、 切り替えはどうしたらいいでしょうか。よろしく

  • 数字と文字列から数字のみ取り出したい

    下記のような数字と文字の組み合わさった文字列から数字のみを取り出したいのですが、 基準となる文字もなく、数字の桁、文字数もバラバラで、さらに文字部分にも数字が 入っていて調べた数式が使えず困っています。 (例1)109778大倉山マンション第3⇒109778 を取り出したい (例2)13482マックハイム綱島第10 ⇒ 13482 を取り出したい (例3)12896ハイム大倉山⇒12896 を取り出したい (例4)1198藤和シティコープ大倉山太尾町A棟⇒1198を取り出したい 調べた数式=LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) 上記の数式だと(例1)(例2)の場合、建物名の数値を反映してしまい数値のみ取り出せません。 数値部分はみたところ4~6桁でした。 何か良い数式がありましたら、ご教授願います。

  • 【Excel】特定の文字間の数字を取り出す

    Excel2003を使用しています。 あるセルに「●●●A9B××…」と入力してあった場合、AとBの間にある数字“9”を取り出すにはどうしたらいいでしょうか? 全体の文字数は変化しますが、AとBという文字は必ずあって、その間にある数字だけを取り出して、それを別の計算で使用したいのです。数字は1桁か2桁のいずれかですが、関数の組み合わせ等で可能でしょうか? よろしくお願いします。

  • 数字の読み取り

    現在Cでプログラムを作成しています。 プログラムはテキストファイルから最初の列の数字N(最大で50)を読み取り、テキストファイルがN+1列、各列N文字のフォーマットになっているかを読み取ります。 例) 4(この場合4文字の単語が4個、4列に表示されます) test text temp file この場合は問題ありませんが、 一列目の数値がマイナスだったり、1k2など数字以外を含んでいる場合、 または上の例で言うと4文字ではない単語が混ざっていたり、単語の数が4個ではなかったりした場合にエラーメッセージを出力するようにしたいです。 isdigitを使って一列目が数字かどうかは判断できますが、それが二桁だとどうすればいいのか分かりません。 また数字だと分かっても、その数字を実際に数値として活用するにはどうすればいいのでしょうか?

  • 特定のセルを参照し、その一部分だけ残すマクロ

    鉄骨関係です。 同行のセルを参照し H形鋼、L形鋼、C形鋼が入力してある文字の一部分だけ 残すVBAを教えてください。(Excel2007を使用) 例えばE列がW(web)の時、同じ行の赤色部の部材はWeb厚の数字だけ残す。 F(Flange)の時は、鉄骨のFlange厚の数字だけ残す。 またPLも画像の様に、後の数字だけ残すようにしたいのですが いい方法があれば御教示下さい。

  • エクセルで特定の数字を入力すると特定の値に自動変換する方法

    エクセルのマクロを使用して簡単に入力できるようにしたいです。 (ある特定の範囲内だけ、数字を入力すると特定の文字に変換。) 例)数字の1を入力すると、早   数字の2を入力すると、日                等 現状入力する際、ドロップダウンリストをクリックして入力しています。 テンキーで数字を入力して、入力時間を少なくしたいです。 よろしくお願いいたします。

  • Excelでセル内の数字だけ取り出したい。

    1セル内に最大40文字程度の半角英数カナが混在しています。 例:1234abcdアイウ3456efghijk これが数千行あるのですが、集計のため数字にしたく、 しかも数字連続と次の数字連続の間にスペースを入れたいです。 例:1234 3456 かなり調べましたが、関数では数字を取り出すだけでも40文字は不可能のように思います。 マクロで置き換えを連続させて文字を消すのは思いつくのですが、 今少しスマートな方法はありますでしょうか?

  • B列にA列の数字をかけた数字を出したい

    B列の各行に3(or2or1)を入力をしたらA列の数字に0.3(2なら0.2,1なら0.1) をかけて小数点第一以下は切り捨てをするマクロを組みたいのですができません。 例  A5に4581と入力されていてB5に3と入力をしたらB5が1374と変換される ようにしたいです;どのようなマクロを組めばよいでしょうか。。。 環境はWINDOWSVISTAのEXCEL2007ですm(__)m

このQ&Aのポイント
  • インクを検知できませんとエラーメッセージが出ます。ある日突然です。インクはブラザー純正です。インクカートリッジを入れ直しても治りません。対処法を教えてください。
  • お困りの方へ、インクを検知できませんというエラーメッセージが表示される場合は、ブラザー純正のインクを使用しているにも関わらず、インクカートリッジを入れ直しても解決しないことがあります。そんな時は対処法を試してみましょう。
  • ブラザー製品をお使いの方で、突然インクを検知できませんというエラーメッセージが表示される場合は、まずはインクカートリッジを取り出して再度セットしてみてください。それでも解決しない場合は、以下の対処法を試してみることをおすすめします。
回答を見る