Home » Python » xlwingsの使い方 » xlwingsのRange.end()は1文字で方向を指定できる

xlwingsのRange.end()は1文字で方向を指定できる

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + xlwings 0.29.1 + 64bit Excel(バージョン2304 ビルド16327.20248)

Excel自体を操作するPythonの外部ライブラリ「xlwings」のRangeクラスには、

Excel VBAのRange.Endプロパティに相当するend()メソッドも実装されています。

[スポンサードリンク]

Excel VBAのRange.EndプロパティにはXlDirection列挙型に定義されている定数を指定しますが、

xlwingsのRange.end()メソッドの引数には、どの方向の終端セルを取得するかを指示する文字列

  • down
  • left
  • right
  • up

を指定するのが基本です。
この方向を、1文字で指定することも可能です。

Range.end()に方向を1文字で指定したサンプル

A1:E5セルの全セルに何らかのデータが入力されているワークシートがアクティブな状態で、以下のスクリプトを実行してみてください。

import xlwings as xw

sht = xw.sheets.active
rng = sht.range('C3')

print(rng.end('d').address)
print(rng.end('l').address)
print(rng.end('r').address)
print(rng.end('u').address)

C3セルの、下・左・右・上の終端セルのセル番地が、

$C$5
$A$3
$E$3
$C$1

と出力されます。

方向用の辞書が定義されている

xlwingsのRange.end()メソッドは、_xlwindows.pyモジュールのRangeクラスで、Excel VBAのRange.Endプロパティを以下のように呼んでいます。

def end(self, direction):
    direction = directions_s2i.get(direction, direction)
    return Range(xl=self.xl.End(direction))

「down」「left」「right」「up」「d」「l」「r」「u」は、_xlwindows.pyモジュールに以下のように辞書(dict)として定義されています。

directions_s2i = {
    "d": -4121,
    "down": -4121,
    "l": -4159,
    "left": -4159,
    "r": -4161,
    "right": -4161,
    "u": -4162,
    "up": -4162,
}

逆に、数値から文字列については、

directions_i2s = {-4121: "down", -4159: "left", -4161: "right", -4162: "up"}

と定義されています。

最終更新日時:2023-06-06 11:50

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsのRange.end()は1文字で方向を指定できる

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.