cj_mover の回答履歴

全798件中701~720件表示
  • 条件にて行削除をするをマクロで高速化したい

    シート(最初)のA,B,C列を連結した値と シート(残)のA,B,C列を連結した値を照合させ 同じ値の場合は シート(残)の該当行を削除です。 シート(最初)は6,182行 シート(残)は7,561行です。 VLookupを使って処理時間5分です。 VLookupを使わない記述で25分です。 20,000行位のデータを処理したいのですが時間が不安です。 別スレで 「VLookupで処理3分をdictionaryオブジェクトで1秒以内にする方法」を 教えていただきましたが、流用ができません。 シート(残)内にもシート(最初)内にも重複行はありません。 私の記述は「F列を検索用に使用」となっていて F列にデータがある場合、都度記述を書換えないと 使えないので、そこも対応したいです。 照合させる値はA,B,Cの連結値というのは変わらないのですが データがある範囲は都度変化する為です。 ・A~E列とかA~H列とか ・シート残はA~E列、シート最初はA~G列とか 記述そのものを教えてください。よろしくお願いします。 Sub 自動重複削除F列使用() 'シート(最初)のA,B,C列とシート(残)のA,B,C列が一致した行は 'シート残の行を削除 'F列を検索値として使用。 Dim Line As Long Dim LastRow As Long Dim myRange As Range Dim Flag 'シート「最初」のF1に、A,B,C列を結合した値を転記 With Sheets("最初") Set myRange = .Range("F2:F" & .Cells(Rows.Count, "A").End(xlUp).Row) .Range("F2").FormulaR1C1 = "=RC[-5]&RC[-4]&RC[-3]" 'シート「最初」のF2からデータのあるところまで 'F1の規則でデータ貼付 .Range("F2").AutoFill Destination:=myRange End With 'シート「残」のF1に、A,B,C列を結合した値を転記 Sheets("残").Select LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("F2").FormulaR1C1 = "=RC[-5]&RC[-4]&RC[-3]" 'シート「最初」のF2からデータのあるところまで 'F1の規則でデータ貼付 Range("F2").AutoFill Destination:=Range("F2:F" & LastRow) On Error Resume Next '双方のシートのF列を照合させ、ヒットした行は 'シート「残」から行削除をする For Line = LastRow To 2 Step -1 Flag = WorksheetFunction.VLookup(Cells(Line, 6).Value, myRange, 1, 0) If Err.Number = 0 Then Rows(Line).Delete xlUp Else Err.Clear End If Next Line '検索に使用したF列を削除 Sheets("残").Select Columns("F:F").Select Selection.Delete Shift:=xlToLeft Sheets("最初").Select Columns("F:F").Select Selection.Delete Shift:=xlToLeft Sheets("残").Select Range("A1").Select End Sub ●別方法 Sub 自動重複行削除F列未使用超遅() 'VLOOKUP無 'シート(最初)のA,B,C列とシート(残)の 'A,B,C列が一致した行はシート(残)の行を削除 Dim ws1, ws2 As Worksheet Dim i, j As Long Set ws1 = Worksheets("最初") Set ws2 = Worksheets("残") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If ws1.Cells(i, 1) = ws2.Cells(j, 1) And ws1.Cells(i, 2) = ws2.Cells(j, 2) And _ ws1.Cells(i, 3) = ws2.Cells(j, 3) Then ws2.Rows(j).Delete (xlUp) End

  • ExcelのVBAのループで時間短縮する方法を教えてださい。

    ExcelのVBAのループで時間短縮する方法を教えてださい。 F2~H列最終行にある、株式会社や有限会社を(株)や(有)に置き換えるために 下記のようなループを使っています。 でも、数万行とかある場合、結構時間がかかります。 もっと短時間で動かせるコードの書き方がありましたら教えてください。 よろしくお願いいたします。 For Each MyRange In Range("F2:H" & 最終行) MyRange.Value = Replace(MyRange.Value, "株式会社", "(株)") MyRange.Value = Replace(MyRange.Value, " 株式会社", "(株)") MyRange.Value = Replace(MyRange.Value, "株式会社 ", "(株)") MyRange.Value = Replace(MyRange.Value, "有限会社", "(有)") MyRange.Value = Replace(MyRange.Value, " 有限会社", "(有)") MyRange.Value = Replace(MyRange.Value, "有限会社 ", "(有)") MyRange.Value = Replace(MyRange.Value, "(有) ", "(有)") MyRange.Value = Replace(MyRange.Value, " (有)", "(有)") MyRange.Value = Replace(MyRange.Value, "(株) ", "(株)") MyRange.Value = Replace(MyRange.Value, " (株)", "(株)") Next

  •  エクセルで写真をサムネール表示するマクロを組んでいます。

     エクセルで写真をサムネール表示するマクロを組んでいます。 ところが、Sheetに挿入した写真をコピーするところで エラーが出ます。 いろいろ試行錯誤を繰り返したところ コマンドボタンなどのボタン類を張り付けてあるSheetでは、 コピーできないことが分かりました。  具体的なマクロサンプルを挙げておきますので、 同じようなことが起こるか試してもらえませんでしょうか。 またその原因も教えていただければ幸いです。 Sub test() Dim x As Variant x = Application.GetOpenFilename("jpgFiles,*.jpg") If VarType(x) = vbBoolean Then Exit Sub ActiveSheet.Pictures.Insert(CStr(x)).Select Selection.Width = 162 Selection.Height = 100 Selection.Copy ActiveSheet.Paste End Sub  上のtest()マクロをコマンドボタンの有るSheetと無いSheetで 実行すると、 ◎コマンドボタンの有るSheet ⇒ Selection.Copyで     『PictureクラスのCopyメソッドが失敗しました』というエラーが出る。 ◎コマンドボタンの無いSheet ⇒ エラーが出ずコード通り実行される  因みに、 エクセル2007は、(12.0.6425.1000)SP2 MSO(12.0.6529.5000) OSは、XP HomeEdition Version 2002 Service Pack 3 です。

  • 同一セル内での重複削除

    同一セル内での重複削除 今手元にとあるデータがあります。 そのデータは同一セル内に「○○株式会社/■■印刷/▼▼株式会社/○○株式会社」のように、スラッシュ区切りで会社名が入っています。 このデータから、重複している会社名を削除したいと考えています。上記の例ですと「○○株式会社」が重複していますので、これを削除し「○○株式会社/■■印刷/▼▼株式会社」としたいです。 データが大量にあるので、関数を使用するよりも、マクロを使用した方が時間的にも作業量的にも楽だと思うのですが、いまいちどうやって良いか分かりません。 要約しますと、同一セル内にある重複データを削除するマクロを作れるのか、作れるならばどのようなものか、ということを教えていただきたいと思います。 また、もし削除した際に「・・・・・/」と末尾がスラッシュになった場合、最後のスラッシュだけを削除する方法も教えていただければうれしいです。 ちなみに、会社名の順序に意味はありませんので、重複したデータの1つめを削除するのか、2つめを削除するのかは気にしていません。 どなたかお願いいたします。

  • 同一セル内での重複削除

    同一セル内での重複削除 今手元にとあるデータがあります。 そのデータは同一セル内に「○○株式会社/■■印刷/▼▼株式会社/○○株式会社」のように、スラッシュ区切りで会社名が入っています。 このデータから、重複している会社名を削除したいと考えています。上記の例ですと「○○株式会社」が重複していますので、これを削除し「○○株式会社/■■印刷/▼▼株式会社」としたいです。 データが大量にあるので、関数を使用するよりも、マクロを使用した方が時間的にも作業量的にも楽だと思うのですが、いまいちどうやって良いか分かりません。 要約しますと、同一セル内にある重複データを削除するマクロを作れるのか、作れるならばどのようなものか、ということを教えていただきたいと思います。 また、もし削除した際に「・・・・・/」と末尾がスラッシュになった場合、最後のスラッシュだけを削除する方法も教えていただければうれしいです。 ちなみに、会社名の順序に意味はありませんので、重複したデータの1つめを削除するのか、2つめを削除するのかは気にしていません。 どなたかお願いいたします。

  • エクセル2000VBAでオブジェクトの指定

    エクセル2000VBAでオブジェクトの指定 ワークシート上にボタン、チェックボックス、コンボボックス等のコントロールがあります。(OLEオブジェクトではありません、フォームのオブジェクトです。) そして、それらのすべてが表示されているわけではなく、中にはVisible=False で非表示にされているものもあります。 またフォーム以外にもワードアート、ピクチャー等のオブジェクトも配置されています。 このうち、現在表示されているボタン、チェックボックス、コンボボックス等のコントロールだけを非表示にし、その後再度表示させたいのです。(最初から非表示のものは表示させない) 一応、以下のようなVBAコードで目的は達成されます。 Sub TEST01()   Dim ob As Object   Dim buf As Boolean, myAry As Variant   With ActiveSheet        Application.ScreenUpdating = False '画面更新停止     For Each ob In .DrawingObjects 'Shapesではダメ       If ob.Visible = True Then '可視なら         Select Case TypeName(ob) '以下に該当すれば選択           Case "Button": ob.Select (False)           Case "CheckBox": ob.Select (False)           Case "DropDown": ob.Select (False)           Case "Spinner": ob.Select (False)         End Select       End If     Next ob          If TypeName(Selection) <> "Range" Then '対象があれば       buf = True       Set myAry = Selection       .Range("A1").Select       myAry.Visible = False '非表示に     End If     Application.ScreenUpdating = True '画面更新停止解除          If buf Then       MsgBox "非表示にしました。"       myAry.Visible = True '表示       MsgBox "再度表示しました。"       Set varAry = Nothing     Else       MsgBox "非表示にする対象はありません。"     End If        End With End Sub 質問は2つですが、どちらかへの回答でもかまいません。 1.上記コードでは対象のオブジェクトをSelectしてから Set myAry = Selection で変数を定義しましたが、いちいちSelectしなくともよい方法を知りたいのです。 多分、対象のオブジェクトを配列に取り込めばいいのでしょうが、やり方がわかりません。 2.上記コードではいちいち Case "Button" Case "CheckBox" などと、コントロールの種類を列記していますが、これを列記しないでもコントロールだと識別する方法はないのでしょうか? お知恵をお貸しください。

  • エクセル2000VBAでオブジェクトの指定

    エクセル2000VBAでオブジェクトの指定 ワークシート上にボタン、チェックボックス、コンボボックス等のコントロールがあります。(OLEオブジェクトではありません、フォームのオブジェクトです。) そして、それらのすべてが表示されているわけではなく、中にはVisible=False で非表示にされているものもあります。 またフォーム以外にもワードアート、ピクチャー等のオブジェクトも配置されています。 このうち、現在表示されているボタン、チェックボックス、コンボボックス等のコントロールだけを非表示にし、その後再度表示させたいのです。(最初から非表示のものは表示させない) 一応、以下のようなVBAコードで目的は達成されます。 Sub TEST01()   Dim ob As Object   Dim buf As Boolean, myAry As Variant   With ActiveSheet        Application.ScreenUpdating = False '画面更新停止     For Each ob In .DrawingObjects 'Shapesではダメ       If ob.Visible = True Then '可視なら         Select Case TypeName(ob) '以下に該当すれば選択           Case "Button": ob.Select (False)           Case "CheckBox": ob.Select (False)           Case "DropDown": ob.Select (False)           Case "Spinner": ob.Select (False)         End Select       End If     Next ob          If TypeName(Selection) <> "Range" Then '対象があれば       buf = True       Set myAry = Selection       .Range("A1").Select       myAry.Visible = False '非表示に     End If     Application.ScreenUpdating = True '画面更新停止解除          If buf Then       MsgBox "非表示にしました。"       myAry.Visible = True '表示       MsgBox "再度表示しました。"       Set varAry = Nothing     Else       MsgBox "非表示にする対象はありません。"     End If        End With End Sub 質問は2つですが、どちらかへの回答でもかまいません。 1.上記コードでは対象のオブジェクトをSelectしてから Set myAry = Selection で変数を定義しましたが、いちいちSelectしなくともよい方法を知りたいのです。 多分、対象のオブジェクトを配列に取り込めばいいのでしょうが、やり方がわかりません。 2.上記コードではいちいち Case "Button" Case "CheckBox" などと、コントロールの種類を列記していますが、これを列記しないでもコントロールだと識別する方法はないのでしょうか? お知恵をお貸しください。

  • Excel で立ち上げた状態でマクロの有効・無効の切替?

    本質問に御対応頂き、ありがとうございます。 再度、質問させて下さい。 エクセル2003で、選択したセルの列と行の全てのセルがハイライトできるよう、VBエディターを設定してのですが、列を挿入したい時、全てが選択されます。立ち上げて状態で、マクロの有効・無効を切り替えること、可能でしょうか? 宜しくお願い致します。

  • エクセルでの選択範囲の追加について。

    エクセルでの選択範囲の追加について。 エクセル使用中にマウスの左ボタンでドラッグしながら セルを選択する際に、 Ctrlキーを押しながらやるとどんどん追加していくことができます。 この逆に、選択範囲をマイナスしていく方法はありますか? まとめて貼り付けとか、まとめて書式変更などで セルを追加していく途中で間違ったセルを選択してしまって、 また初めから・・・ということがよくあります。

  • 【Excel VBA】空白の結合セルに右上り斜線を引く

    Excel VBAは初心者です。 仕事で必要なため、アドバイスをいただけると非常に助かります。 よろしくお願いします。 【VBAで実現したいこと】  下記のようなセルで構成されている簡単な  申請書を作成しております。    結合セル1:ABCD列と4行目で結合されたセルで、氏名を入力します。  結合セル2:EFGH列と4行目で結合されたセルで、氏名を入力します。  結合セルA:ABCD列から5678行で結合されたセルです。  結合セルB:EFGH列から5678行で結合されたセルです。  ※結合セル1、2~10まで存在し、結合セルA、B~Jまで存在します。  結合セルAは結合セル1を参照し、結合セル1が空欄の場合  結合セルAに右上りの斜線を引きます。結合セル1が空欄でない場合、  何もしません。  結合セルBは結合セル2を参照し、結合セル2が空欄の場合  結合セルBに右上りの斜線を引きます。結合セル2が空欄でない場合、  何もしません。  同様な処理を、結合セルJ、結合セル10まで行います。 【教えていただきたいこと】  1.結合セルA~J、結合セル1~10全てが空欄だった場合、   空欄の結合セルは右上りの斜線を引きます。   下記のプログラムを作成しましたが、右上りの斜線が   引けません。   どのようにしたら良いでしょうか。     2.上記「VBAで実現したいこと」を行うためには、   下記のプログラムにどのような追加を行えば良いでしょうか。 【作成したプログラム】 Private Sub worksheet_change(ByVal target As Range) Dim i As Range For Each i In target If i.MergeArea.Value = "" Then i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlContinuous Else i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlNone End If Next i End Sub 以上、よろしくお願いします。

  • 【Excel VBA】空白の結合セルに右上り斜線を引く

    Excel VBAは初心者です。 仕事で必要なため、アドバイスをいただけると非常に助かります。 よろしくお願いします。 【VBAで実現したいこと】  下記のようなセルで構成されている簡単な  申請書を作成しております。    結合セル1:ABCD列と4行目で結合されたセルで、氏名を入力します。  結合セル2:EFGH列と4行目で結合されたセルで、氏名を入力します。  結合セルA:ABCD列から5678行で結合されたセルです。  結合セルB:EFGH列から5678行で結合されたセルです。  ※結合セル1、2~10まで存在し、結合セルA、B~Jまで存在します。  結合セルAは結合セル1を参照し、結合セル1が空欄の場合  結合セルAに右上りの斜線を引きます。結合セル1が空欄でない場合、  何もしません。  結合セルBは結合セル2を参照し、結合セル2が空欄の場合  結合セルBに右上りの斜線を引きます。結合セル2が空欄でない場合、  何もしません。  同様な処理を、結合セルJ、結合セル10まで行います。 【教えていただきたいこと】  1.結合セルA~J、結合セル1~10全てが空欄だった場合、   空欄の結合セルは右上りの斜線を引きます。   下記のプログラムを作成しましたが、右上りの斜線が   引けません。   どのようにしたら良いでしょうか。     2.上記「VBAで実現したいこと」を行うためには、   下記のプログラムにどのような追加を行えば良いでしょうか。 【作成したプログラム】 Private Sub worksheet_change(ByVal target As Range) Dim i As Range For Each i In target If i.MergeArea.Value = "" Then i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlContinuous Else i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlNone End If Next i End Sub 以上、よろしくお願いします。

  • 【Excel VBA】空白の結合セルに右上り斜線を引く

    Excel VBAは初心者です。 仕事で必要なため、アドバイスをいただけると非常に助かります。 よろしくお願いします。 【VBAで実現したいこと】  下記のようなセルで構成されている簡単な  申請書を作成しております。    結合セル1:ABCD列と4行目で結合されたセルで、氏名を入力します。  結合セル2:EFGH列と4行目で結合されたセルで、氏名を入力します。  結合セルA:ABCD列から5678行で結合されたセルです。  結合セルB:EFGH列から5678行で結合されたセルです。  ※結合セル1、2~10まで存在し、結合セルA、B~Jまで存在します。  結合セルAは結合セル1を参照し、結合セル1が空欄の場合  結合セルAに右上りの斜線を引きます。結合セル1が空欄でない場合、  何もしません。  結合セルBは結合セル2を参照し、結合セル2が空欄の場合  結合セルBに右上りの斜線を引きます。結合セル2が空欄でない場合、  何もしません。  同様な処理を、結合セルJ、結合セル10まで行います。 【教えていただきたいこと】  1.結合セルA~J、結合セル1~10全てが空欄だった場合、   空欄の結合セルは右上りの斜線を引きます。   下記のプログラムを作成しましたが、右上りの斜線が   引けません。   どのようにしたら良いでしょうか。     2.上記「VBAで実現したいこと」を行うためには、   下記のプログラムにどのような追加を行えば良いでしょうか。 【作成したプログラム】 Private Sub worksheet_change(ByVal target As Range) Dim i As Range For Each i In target If i.MergeArea.Value = "" Then i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlContinuous Else i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlNone End If Next i End Sub 以上、よろしくお願いします。

  • エクセルでのマクロでのループ処理について

    お世話になります。 エクセルのシートにAAA、BBB、0001,0002,0003…というシートがあり ます。 0001、0002…は連番で最大で0050までありますがシート数は変化します。 この連番のシートの名前をそれぞれのシートのH8セルに記入されている テキストと同じ文字にしたいのですが。 シートの名前の変更マクロは検索して見つけたのですがループさせる 方法がわかりません。 Sheets("0001").Select For i = 1 To 100 sName = Format(i, "0000") ActiveSheet.Name = Worksheets("sName").Range Dim シート名 As String シート名 = Range("h5").Value If シート名 = "" Then Exit Sub End If ActiveSheet.Name = シート名 Next 「0001シートから初めて次に0002シート0003シートと変更し シートが見つからない時は変更を終わる。」 というように書ければいいのかなと思います。 上記の様だと0002シートへ移りません。 あまり詳しくないのでWEB検索したコードを書き足してみました。 修正箇所をご指摘頂ければ助かります。 宜しくお願いします。

  • エクセルでのマクロでのループ処理について

    お世話になります。 エクセルのシートにAAA、BBB、0001,0002,0003…というシートがあり ます。 0001、0002…は連番で最大で0050までありますがシート数は変化します。 この連番のシートの名前をそれぞれのシートのH8セルに記入されている テキストと同じ文字にしたいのですが。 シートの名前の変更マクロは検索して見つけたのですがループさせる 方法がわかりません。 Sheets("0001").Select For i = 1 To 100 sName = Format(i, "0000") ActiveSheet.Name = Worksheets("sName").Range Dim シート名 As String シート名 = Range("h5").Value If シート名 = "" Then Exit Sub End If ActiveSheet.Name = シート名 Next 「0001シートから初めて次に0002シート0003シートと変更し シートが見つからない時は変更を終わる。」 というように書ければいいのかなと思います。 上記の様だと0002シートへ移りません。 あまり詳しくないのでWEB検索したコードを書き足してみました。 修正箇所をご指摘頂ければ助かります。 宜しくお願いします。

  • エクセルVBAで一番左の可視シート名を取得

    エクセルVBAで一番左側にあるシート名を取得する場合、通常は Sub test01()   MsgBox Sheets(1).Name End Sub で簡単にできますが、このSheets(1)が非表示になっている場合でもその名前が取得されるため、見た目での一番左側にあるシート名ではなくなってしまいます。 もちろん、非表示になっているシートを除外して Sub test02()   Dim n As Integer   For n = 1 To Sheets.Count     If Sheets(n).Visible Then       MsgBox Sheets(n).Name       Exit For     End If   Next End Sub とすれば取得できるのはわかりますが、こんなまだるっこい方法以外に簡単に一番左の可視シート名を取得する方法はないでしょうか? (^∇^)? ご教示くださいませ。

  • エクセルVBA 長さ0の文字列をNullに

    エクセル2000です。 アクセスから出力されたデータをエクセルに貼り付けた場合、問題がおきることがあります。 調べてみたら、アクセスでは、同じ空白でも、レコードが作られてからまだ一回もデータが入っていない状態と、何かデータが入ったことはあるが、削除されて今は空白になった状態をそれぞれ「Null値」と、「長さ 0 の文字列」との 2 種類に区別しているようです。 そのためなのか、それをコピーしてくるとエクセル側でも何もデータが入ってないのに「空白」とはみなされないセルができてしまい、マクロの動きをおかしくしてしまうことがあります。(今日、マクロが想定しない動きをして、その原因がわからず往生しました) やむをえず以下のようなマクロをつくりましたが、Usedrangeが広いとこれもけっこう時間がかかります。 Sub Null化() '長さ0の文字列をNullに   With Application     .ScreenUpdating = False     .Calculation = xlCalculationManual       For Each c In ActiveSheet.UsedRange         If c.Value = "" And Not IsNull(c) Then           c.ClearContents         End If       Next c     .Calculation = xlCalculationAutomatic     .ScreenUpdating = True   End With End Sub 最初から、「長さ 0 の文字列」セルを一度に選択する方法があれば簡単なのですが、そのような方法はありますか? あるいは他のもっとよい方法などがあればご教示くださいませ。  (o。_。)oペコッ

  • エクセルVBA 長さ0の文字列をNullに

    エクセル2000です。 アクセスから出力されたデータをエクセルに貼り付けた場合、問題がおきることがあります。 調べてみたら、アクセスでは、同じ空白でも、レコードが作られてからまだ一回もデータが入っていない状態と、何かデータが入ったことはあるが、削除されて今は空白になった状態をそれぞれ「Null値」と、「長さ 0 の文字列」との 2 種類に区別しているようです。 そのためなのか、それをコピーしてくるとエクセル側でも何もデータが入ってないのに「空白」とはみなされないセルができてしまい、マクロの動きをおかしくしてしまうことがあります。(今日、マクロが想定しない動きをして、その原因がわからず往生しました) やむをえず以下のようなマクロをつくりましたが、Usedrangeが広いとこれもけっこう時間がかかります。 Sub Null化() '長さ0の文字列をNullに   With Application     .ScreenUpdating = False     .Calculation = xlCalculationManual       For Each c In ActiveSheet.UsedRange         If c.Value = "" And Not IsNull(c) Then           c.ClearContents         End If       Next c     .Calculation = xlCalculationAutomatic     .ScreenUpdating = True   End With End Sub 最初から、「長さ 0 の文字列」セルを一度に選択する方法があれば簡単なのですが、そのような方法はありますか? あるいは他のもっとよい方法などがあればご教示くださいませ。  (o。_。)oペコッ

  • エクセルで数字の変換

    エクセル2000です。 ひとつのセルの中に、たとえば「2009年は第1、第5営業部の24名」という文字列があったとします。これを半角一桁の数字のみに限定して全角の数字に変換する方法はないでしょうか? JIS関数だとすべてが全角になってしまいます。 関数でもVBAでもかまいません。 「2009年は第1、第5営業部の24名」と変換したいのです。 対象が何百もあるので困っています。 よろしくお願いします。

  • エクセルで数字の変換

    エクセル2000です。 ひとつのセルの中に、たとえば「2009年は第1、第5営業部の24名」という文字列があったとします。これを半角一桁の数字のみに限定して全角の数字に変換する方法はないでしょうか? JIS関数だとすべてが全角になってしまいます。 関数でもVBAでもかまいません。 「2009年は第1、第5営業部の24名」と変換したいのです。 対象が何百もあるので困っています。 よろしくお願いします。

  • エクセルで数字の変換

    エクセル2000です。 ひとつのセルの中に、たとえば「2009年は第1、第5営業部の24名」という文字列があったとします。これを半角一桁の数字のみに限定して全角の数字に変換する方法はないでしょうか? JIS関数だとすべてが全角になってしまいます。 関数でもVBAでもかまいません。 「2009年は第1、第5営業部の24名」と変換したいのです。 対象が何百もあるので困っています。 よろしくお願いします。