[[20250407110057]] 『文字列からセル位置を取りたい』(月読) ページの最後に飛ぶ

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

| 全文検索 | 過去ログ ]

 

『文字列からセル位置を取りたい』(月読)

FORMULAに入っている文字列からセル位置を取ってくる方法を教えてください

"=E17/(F43*SUM(C38:C41)-F43)"

⇒"E17","F43","C38:C41","F43"

"=(C38*P38+C39*P39)/(SUM($C$38:$C$41))"
⇒"C38","P38","C39","P39","$C$38:$C$41"

< 使用 Excel:Excel2016、使用 OS:Windows11 >


それをしってどうするんですか?
数式の入ってセルを選択して→参照元のトレース
でよくないですか?
知りたかったら、1文字ずつ調べて判別すればいいんじゃないですか?
(参考) 2025/04/07(月) 11:18:49

 Range.Precedents で検索してください。
(jindon) 2025/04/07(月) 11:23:07

 既にコメントがありましたとおりです。

 マクロで対応してください。例えば以下のように。
 Sub test()
     Dim rng As Range
     For Each rng In Selection
         If rng.HasFormula Then
             rng.Offset(, 1) = rng.Precedents.Address
             'または
             'Debug.Print rng.Address, rng.Precedents.Address
         End If
     Next
 End Sub
 書き出し先はそちらで工夫してください。別シートの同じセル位置とかもよいかも。
 なお、ユーザー定義関数では対応できないようです。

 【結果の表示形式】
 E17,F43,C38:C41,F43 の形式で書き込みます。
 どうしても "E17","F43","C38:C41","F43"としたければ、
 ary = Split(rng.Precedents.Address,",") としたうえで、
 各要素を"で挟んだ配列ary2を作成し、
 Join(ary2 ,",") とすればよいでしょう。ご自身で加工してみてください。

 【その他】
 (1)直接参照しているセルだけなら DirectPrecedents プロパティです。
 (2)他シートへの参照もあるのなら、それはPrecedentsで捕捉されないので、別の対応が必要です。
    必要なら用意はあるので、その旨コメントして下さい。

(xyz) 2025/04/08(火) 09:59:54


コメント返信:

[ 一覧(最新更新順) ]


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