[[20261029155132]] 『セル範囲を示す文字列の値の1行上の文字列を返す梶x(アスリー) ページの最後に飛ぶ

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

| 全文検索 | 過去ログ ]

 

『セル範囲を示す文字列の値の1行上の文字列を返す関数』(アスリー)

C列2行目の値「62」
C列3行目の値「58」
C列4行目の値「54」
・
・
C列16行目の値が「6」
と-4ずつ減っていきます。
C列17行目の値は又「62」から始まり
1行下に行くことに-4ずつ減っていきます。

B2セルの数式「="V"&C4&":"&"AK"&C4」
B2セルの値「V62:AK62」
となっています。

B2セルは、C列n行目の値が「6」の次の行から
「AP62:AW62」
という様に、列名が変わっていきます。

そこで、A列にはB列で指定されている列名は変えずに、
行数だけを-1できればいいなと思っています。

A2セルの値が、B2セルの範囲の1つ上「V61:AK61」や
「AP62:AW62」となるようなワークシート関数はあるのでしょうか。

どなたかご教授くださいますよう、
よろしくお願いいたします。

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


激務のために頭の回転が落ちていたようです。
そもそもワークシート関数よりもVBAの方が私にとっては容易なので、
最初からVBAを使えばよかっただけでした。(-_-;)
以下のコードで自己解決しました。
お騒がせしてすみませんでした。

Sub aaa()

    Dim ws As Worksheet
    Dim rng As Range
    Dim lngRow As Long

    Set ws = Worksheets("Sheet2")
    For lngRow = 4 To ws.Cells(Rows.Count, "B").End(xlUp).Row
        Set rng = Range(ws.Cells(lngRow, "B").Value)
        Set rng = rng.Offset(-1, 0)
        ws.Cells(lngRow, "A").Value = rng.Address(False, False)
    Next lngRow

End Sub

(アスリー) 2026/10/29(木) 16:29:17


 =LET(_a,A2,
    _n,REGEXEXTRACT(_a,"[0-9]+")-1,
    REGEXREPLACE(_a,"[0-9]+",_n)
 )

 解決しているみたいですけど ワークシート関数案
(ちくわ) 2026/10/29(木) 17:13:26

 あ、参照先間違えてるし_nもc列見ればいいですね
 馬鹿ですね。
(ちくわ) 2026/10/29(木) 17:19:09

 [C2] =60-(MOD(ROW($A1)-1,15)+1)*4+6
                                      などと質問外で遊んでたらもう終わってた...

(白茶) 2026/10/29(木) 17:27:22


コメント返信:

[ 一覧(最新更新順) ]


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