セル A1 に以下の数式があり、列の文字を減算して新しいセル B1 に入れる必要があります。この投稿を確認しましたが、うまくいきませんでした。 Excel で列の文字を追加、削除、または増加するにはどうすればよいですか?
たとえば、列 B の値を作成するには数式またはマクロが必要です。列 B は列 A と同じですが、1 列の文字を減算/マイナスします。
Column A | Column B
=+Jan!$V$36 | =+Jan!$U$36
=+Jan!$AD$36 | =+Jan!$AC$36
=+Jan!$AH$36 | =+Jan!$AG$36
答え1
+
数式内の は余分であり、必要ありません。
変更された数式を隣接する列に配置するUDFは次のとおりです。
前提:
- 数式は、1つのセル参照のみで示されているようにシンプルです
- セル参照は常に数式の最後にあります。
- セル参照では常に絶対アドレス指定モードが使用されます。
- 物事をシンプルにするために
- VBAではR1C1表記法を使用します
- 文字列の末尾から逆順に検索すると、
C
- これにより列番号が得られ、そこから減算して
1
変更された数式を取得します。
これにより、投稿したデータが実際のデータと一致しない場合に変更するのに十分な情報が得られます。
*ワークシートに書き戻すと、A1
表記法に変換し直されることに注意してください。
Option Explicit
Sub prevCol()
Dim R As Range, C As Range
Dim WS As Worksheet
Dim sForm As String
Dim lColPos As Long, lColNum As Long
Set WS = Worksheets("sheet3") 'or wherever you have the formulas
With WS
Set R = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each C In R
If C.HasFormula Then
sForm = C.FormulaR1C1
'assuming column number is at the end
lColPos = InStrRev(sForm, "C")
lColNum = Mid(sForm, lColPos + 1, 9)
C.Offset(0, 1).FormulaR1C1 = Left(sForm, lColPos) & lColNum - 1
End If
Next C
End Sub