1: エアロモナス(宮城県) [US] 2020/02/09(日) 12:28:46.70 ● BE:601381941-PLT(13121)

Pythonで「脱VBA」、Excelの行番号を記述せずにセルを指定する方法

Excelデータをプログラムで扱うのなら、プログラミング言語はVBA(Visual Basic for Applications)が定番です。
しかし必ずしもVBAを使う必要はありません。筆者はPythonを使ってExcelデータの操作を自動化することを
お勧めします。Pythonを使えば「脱VBA」を進められます。

PythonでExcelデータを操作するには、前回までに解説してきたように、行/列を指定してワークシートのセルに
アクセスするのが基本です。ワークシートはイテラブル・オブジェクトとして行を返しますし、行も同様にセルを返します。
イテラブル・オブジェクトを活用すれば、直接行番号、列番号を記述せずに読み込むセルを指定することができます。

sample.xlsxというExcelファイルを作って、動作を確かめてみましょう。Excelファイルは「.¥data」フォルダーに入っているとします。

no title


このファイルのワークシートには、データはA1からF5まで整然と入力されています。

次のプログラムを使うと、sample.xlsxを読み込んでworkbookのsheetからrow(行)を取得し、rowからcell(セル)を
取得して順に出力していくことができます。

no title


■対象のワークシートから、データ範囲を自動で取得するプログラム

このコードを、Pythonの開発環境、ここでは「Visual Studio Code」で入力し、動かしてみます。処理結果を、
画面下部の「ターミナル」で確認してみましょう。

no title


ワークシート上の各行のセル内容が、列順の通りに1行ずつ出力されていることがわかります。
このようにデータが1つの範囲(Range)に規則的に入力されている場合は、for row in sheet:でデータ範囲の
各行での繰り返しを指示し、for cell in row:で処理対象の行のセルに順にアクセスすることができます。
異なるファイルから読み出す時でも、いちいち「どこからどこまで」をプログラムで記述し直す必要はありません。便利ですね。

でも、データが整然と並んでいなかったり、データのないセルが範囲内にあったりする場合はどうなっているのでしょうか。
列の終わり、行の終わりをどうやって判断しているのか、調べてみましょう。

続きはソースで

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01174/011700003/
引用元: http://hayabusa9.5ch.net/test/read.cgi/news/1581218926/


174: アナエロリネア(空) [BO] 2020/02/09(日) 14:55:09.13
>>1
シートの特定部位が変更されたら
って判定もできるの?Pythonで

2: マイコプラズマ(ジパング) [US] 2020/02/09(日) 12:30:35.38
こういうの覚えたら先着五名電化製品1円とかの買えるようになるのかな?

5: フィンブリイモナス(茸) [US] 2020/02/09(日) 12:32:43.70
>>2
割と出来る

191: ジオビブリオ(神奈川県) [FI] 2020/02/09(日) 15:08:36.72
>>2
ExcelのVBAでIEを操作する方が早いかもしれない

3: デロビブリオ(東京都) [US] 2020/02/09(日) 12:31:40.85
Pythonでエクセル操作ができるとは知らなかった。

97: ハロアナエロビウム(東京都) [ヌコ] 2020/02/09(日) 13:33:11.66
>>3
Excelの操作は、そのほとんどをExcel内に記すべきだけどね
Pythonに外出ししても、結局は大混乱で終わる

4: ニトロスピラ(やわらか銀行) [TW] 2020/02/09(日) 12:31:43.77
VBAでいいわ

7: スファエロバクター(ジパング) [US] 2020/02/09(日) 12:32:57.61
ピジョンじゃ仕事ないだろ
ブーバーは仕事豊富だけど

8: 放線菌(大阪府) [DE] 2020/02/09(日) 12:34:10.55
macが混じってる職場でもない限りvbaで十分

10: エントモプラズマ(庭) [JP] 2020/02/09(日) 12:34:44.89
pythonだろうがvbaだろうが結局似た様なコード書かなきゃならんのは一緒だしな
ボタン押したらgui呼び出してどうこうみたいな奴もpythonで出来るの?

42: シュードノカルディア(東京都) [ニダ] 2020/02/09(日) 12:57:13.10
>>10

結局はエクセルを操作するオブジェクトを呼び出すんだから一緒だろ

11: バクテロイデス(神奈川県) [US] 2020/02/09(日) 12:35:45.87
他の人に通じない。
渡したあとにvba で作り直して!
いわれる

12: フィンブリイモナス(東京都) [ID] 2020/02/09(日) 12:36:56.05
JavaでPOIじゃあかんのか?

240: ミクロコックス(ジパング) [JP] 2020/02/09(日) 17:12:35.61
>>12
仕事でPOI使えば分かることだが、POIで出来ることなんてのは、VBAで出来ることの10%くらいだ。
特に画像や図形なんてほとんど触れない。
ちゃんと有償の製品使うべき。

15: シュードアナベナ(東京都) [NL] 2020/02/09(日) 12:37:37.98
データを集計してエクセルにする処理を頼まれてたとき、pythonでスクリプト
を組んだことがある。pythonは起動速度が遅いんだよな。

19: パスツーレラ(兵庫県) [HK] 2020/02/09(日) 12:40:36.40
「vbaでもpythonでもできます」じゃ誰新しくpythonに乗り換えるやつなんていないだろ

21: デロビブリオ(ジパング) [US] 2020/02/09(日) 12:41:24.09
Perlばっか使ってるけどパイソン難しい?

27: カルディセリクム(ジパング) [US] 2020/02/09(日) 12:42:56.20
>>21
無茶簡単で拍子抜け

25: テルモゲマティスポラ(岡山県) [CN] 2020/02/09(日) 12:42:42.10
ExcelにJavaScriptが内蔵されたから
vbaは廃れるのかな

29: マイコプラズマ(東京都) [US] 2020/02/09(日) 12:43:49.35
vbaはエクセルの関数使えるからぶっちゃけPython使うよりも便利

33: カンピロバクター(島根県) [ニダ] 2020/02/09(日) 12:46:48.07
脱MS OfficeしないんならVBAでよくね

35: アルマティモナス(SB-iPhone) [US] 2020/02/09(日) 12:49:27.62
会社PCはインストール禁止ですが
できますか?

37: エントモプラズマ(山形県) [ニダ] 2020/02/09(日) 12:50:38.94
VBAがこれだけ多数の人に長期間使われてるのは理由がある、つまりトータルでいい言語。

163: シュードアナベナ(埼玉県) [UA] 2020/02/09(日) 14:44:51.01
>>37
Excelがスプレッドシートのデファクトスタンダードだからな、そらVBA使うよ。
変数をセルに入れておけるところがいいと思うけどそれ以外はあんまり好きじゃねえな。

43: シトファーガ(神奈川県) [US] 2020/02/09(日) 12:57:14.39
自分で完結してたら良いけどな
人の環境だとインストール権限なかったり、インフラ障害がある
exe化すると馬鹿でかいファイル吐き出すし
excelなら大抵の事務pcに入ってて動くからなぁ
グラフは糞だけど

49: エルシミクロビウム(東京都) [HK] 2020/02/09(日) 12:58:26.19
開発環境の差はあるけど
VBAでやることの範囲なら
言語的には大差ないだろ

54: ジアンゲラ(東京都) [US] 2020/02/09(日) 13:00:39.24
APIを使うVBAもライブラリテキストでコピペして使えちゃうからなあ

58: ヴェルコミクロビウム(東京都) [ニダ] 2020/02/09(日) 13:03:48.19
Officeのバージョンアップで苦労した事ないのか

63: テルモゲマティスポラ(東京都) [CN] 2020/02/09(日) 13:06:03.98
VBAなんか最底辺のIT土方だぞ

66: クロロフレクサス(日本) [GB] 2020/02/09(日) 13:07:02.75
サイズのでかいexcelでも早いんか?

67: ストレプトスポランギウム(東京都) [US] 2020/02/09(日) 13:08:19.24
>>66
早いんちゃう?

最適化されてるパッケージは超速だし

71: ロドシクルス(東京都) [FR] 2020/02/09(日) 13:09:26.94
vbaはインストール禁止の会社が使っているのでは

74: アコレプラズマ(茸) [GB] 2020/02/09(日) 13:11:11.99
perlとcsvでやれ

79: ストレプトスポランギウム(東京都) [US] 2020/02/09(日) 13:13:44.42
O型にはpythonが向いてる
A型にはVBAどぞー

83: レジオネラ(ジパング) [BR] 2020/02/09(日) 13:18:54.38
エクセルの処理でpythonってあんまり意味ないだろ。
python好き過ぎてしょうがない人くらいだろ。

86: クロロフレクサス(学校) [CA] 2020/02/09(日) 13:20:30.47
組織のほぼ全端末か特定端末だけで作業するなら良いけどそうじゃないと結局、vbaバージョンも作ることになるだろうな

100: スフィンゴモナス(滋賀県) [US] 2020/02/09(日) 13:35:58.90
pythonを仕事で使う人ってどんな開発環境なんだろ
書籍類では必ずってほどatom勧めてくるけど本当に使いやすいんかね?

103: オピツツス(西日本) [US] 2020/02/09(日) 13:37:18.88
>>100
今のトレンドはvscodeじゃないかなぁ

105: コルディイモナス(やわらか銀行) [HK] 2020/02/09(日) 13:38:31.00
異動したときの引き継ぎどうすんだよ

107: ロドバクター(新潟県) [US] 2020/02/09(日) 13:40:39.55
まぁ組織で仕事することを考えると意味がほとんど無くなるな

スポンサード リンク