MS Excel 2016 - 列の文字を減算する

MS Excel 2016 - 列の文字を減算する

セル 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

ここに画像の説明を入力してください

関連情報