[[20250522173728]] 『数式の中にある〇数字の変換について』(デスうなぎ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『数式の中にある〇数字の変換について』(デスうなぎ)

いつもお世話になっております。
デスうなぎでございます。

有識者の方、お助け下さい。

<やりたいこと>

sheet1のC列・D列・F列・H列の3行目から120行目までの各セルにはvlookup関数が入っております。参照先は〇数字から始まるシート名を参照しているが、〇数字ではなく普通の数字にシート名が変更となる場合、一括で変更することは可能でしょうか?

(例) シート名 ?@東京→1_東京 ?A大阪 →2_大阪 ?B名古屋 →3_名古屋など
〇数字も?@から㉕まであります。

数式やVBAなどで解決方法はございますでしょうか?
あるいは地道にひとつづつ手作業で変更となりますでしょうか?
お手数ですがご確認お願い致します。

何卒、よろしくお願い致します。

追伸 すみません〇数字が文字化けして投稿しております。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 シート名もVBAで変更したいということでしょうか?

 シート名を手動で変更したら、参照している式のシート名部分が自動的に変わりましたが。

 =(1)shheet!A4
 ↓
 ='1sheet'!A1

 (1)はの1の丸付き数字です。文字化け対策です。
(OK) 2025/05/22(木) 17:58:28

使い捨てコード作成してみました。(丸囲い数字は文字化けしてます)

 1 シート名と変更のシート名を一覧にするシートを作成(ここでは「作業」シート)
 ※作業シートは先頭に挿入する。

    |[A]     |[B]         
 [1]|シート名|変更シート名
 [2]|        |            
 [3]|        |            
 [4]|        |            
 [5]|        |            
 [6]|        |            

 2 ↓のマクロを実行して、現在のシート名の一覧をA列に転記

 Sub test1()
     Dim i As Long
     For i = 2 To Worksheets.Count
         Worksheets("作業").Cells(i, "A") = Worksheets(i).Name
     Next
 End Sub

 ↓実行結果
    |[A]     |[B]         
  [1]|シート名|変更シート名
  [2]|?@東京  |            
  [3]|?A大阪  |            

 3 B列に変更するシート名を記入

    |[A]     |[B]         
 [1]|シート名|変更シート名
 [2]|?@東京  |1_東京      
 [3]|?A大阪  |2_大阪      

 4 ↓のマクロ(test2)を実行
 (シート名がB列の名前に変更される)

 Sub test2()
     Dim ws As Worksheet, i As Long
     For i = 2 To Worksheets.Count
         Worksheets(i).Name = Worksheets("作業").Cells(i, "B")
     Next
 End Sub

 ※変換するためだけの使い捨てコードです。
 ※作業シートは必ず先頭に入れてください
(あ) 2025/05/22(木) 18:15:52

ok様

ご確認ありがとうございます。
数式はすでに入っており、今後シート名がマル数字の部分だけ変更になる予定です。
シートは全部で25シートあり、変更する数式(参照シート)が全部で80個以上ありますので
今回ご相談させて頂きました。
(デスうなぎ) 2025/05/22(木) 18:35:34


 > シート名もVBAで変更したいということでしょうか?
 > シート名を手動で変更したら、参照している式のシート名部分が自動的に変わりましたが。
         ↑
 (OK)さんのアドバイス、ちゃんと伝わっていますか?

 現状、何が問題として残っているんですか?

(半平太) 2025/05/22(木) 19:44:26


丸囲い数字を数字に変換するロジックが分からなかったので数字順にシートが並んでいること前提で

 Sub test3()
     Dim ws As Worksheet, i As Long
     For i = 1 To Worksheets.Count
         With Worksheets(i)
             .Name = i & "_" & Right(.Name, Len(.Name) - 1)
         End With
     Next
 End Sub
(あ) 2025/05/22(木) 21:26:52

 シート名(1文字目の丸付き数字)を一括で変更したいってことなら、下のような感じでも・・・

 Sub Sample()
    Dim i As Long, n As Long, s As String
    For i = 1 To Worksheets.Count
        n = -1
        s = Left(Worksheets(i).Name, 1)     'シート名の1文字目
        Select Case AscW(s)
            Case &H24EA                     '丸付きの 0 なら
                n = AscW(s) - &H24EA
            Case &H2460 To &H2473           '丸付きの 1〜20 なら
                n = AscW(s) - &H2460 + 1
            Case &H3251 To &H325F           '丸付きの 21〜35 なら
                n = AscW(s) - &H3251 + 21
            Case &H32B1 To &H32BF           '丸付きの 36〜50 なら
                n = AscW(s) - &H32B1 + 36
        End Select
        If 0 <= n Then
            Worksheets(i).Name = n & "_" & Mid(Worksheets(i).Name, 2)
        End If
    Next i
 End Sub
(ん〜) 2025/05/22(木) 21:51:43

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.