1: エアロモナス(宮城県) [US] 2020/02/09(日) 12:28:46.70 ID:uhkBIXIL0● BE:601381941-PLT(13121)
sssp://img.5ch.net/ico/anime_kuma01.gif
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/

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

204: グロエオバクター(空) [CN] 2020/02/09(日) 15:27:44.57 ID:4dbD8vPT0
>>1
最近JavaScriptの勉強を始めたのに
Pythonのがいいのか?

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

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

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

199: ロドシクルス(ジパング) [JP] 2020/02/09(日) 15:17:02.29 ID:QADlM9Ip0
>>2
入力フォームをあらかじめ見て作るといい。
1クリックで必要事項入力して
最後にサイトの決定ボタンクリック
1秒くらいで済ませられる。

15年前にナイキのSBってスニーカーを買うためのスクリプトをヤフオクで3千円で売ってたけど900人くらいに売れたわ。

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

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

6: マイコプラズマ(東京都) [TR] 2020/02/09(日) 12:32:55.11 ID:fj53d1M40
なんで外部言語つかうの?

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

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

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

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

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

136: ゲマティモナス(宮崎県) [US] 2020/02/09(日) 14:24:00.37 ID:s9LdAbkn0
>>11
まあ、これだろな

vbaマクロ使えるリーマンは、
結構いるからな。経理とか税金とか

192: クテドノバクター(やわらか銀行) [US] 2020/02/09(日) 15:09:42.60 ID:0pluE+7k0
>>11
自分だけPythonできても、デバッグが業務分担できないと自滅。
VBAだとある程度行き渡ってるから、マクロいじれる上司に指示出して対応してもらうこともできる。

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

20: ジアンゲラ(東京都) [US] 2020/02/09(日) 12:41:08.42 ID:UdhnlH9u0
今ある大量のエクセルVBAをコンバートできなきゃ無理

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

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

24: アキフェックス(広島県) [US] 2020/02/09(日) 12:42:38.92 ID:aFykC8F50
VBAの利点はExcelだけで完結するからだろ
それともpythonってExcelしか入って無い奴でも動くの?

228: ヴェルコミクロビウム(東京都) [AR] 2020/02/09(日) 16:37:52.66 ID:MdJbEWfM0
>>24
これな
自分1人の業務を自動化してるならそれでも良いけどそうは行かないし
会社によって許可されてるアプリケーション以外はインストール出来なかったりもするし

325: カルディオバクテリウム(三重県) [US] 2020/02/09(日) 21:28:01.41 ID:XG+BR6nJ0
>>24
python入ってないと無理
ファイルも別になるし
自分以外の人が使うなら辞めた方が良い

408: コリネバクテリウム(千葉県) [US] 2020/02/10(月) 08:20:58.60 ID:yinHSamv0
>>24
Pythonをインストールしなくていいのもあるけど
VBA最大の利点はデータとプログラムがまとめて一つのファイルになってることだからね。

他の言語だとそれができない。
プログラムを別ファイルにしてしまうと
よくわかってない人に「このファイルも一緒にコピーして」
みたいな扱う上での制約を作ってしまうのがデメリット。
VBAだとそれがない。

420: アカントプレウリバクター(奈良県) [US] 2020/02/10(月) 11:44:17.75 ID:PBRlaQTy0
>>408
Windowsに標準でPYthonが入っているのならともかく現状では
Pythonのインストールと環境構築とか余計な作業が発生するからね
自分のPCだけならいいんだけど、社内のPCや関連する所のPCに
それらをやって管理していくのが大変だもんな

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

44: ジアンゲラ(東京都) [US] 2020/02/09(日) 12:57:30.11 ID:UdhnlH9u0
>>35うちもそれのせいでSQLiteが使えない
だいぶ楽なのに

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

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

38: ハロプラズマ(新日本) [FR] 2020/02/09(日) 12:51:11.51 ID:9jMsSQhJ0
特定のセルに知りたい値が入っていたら
アドレス指定して読み込んだ方がよくないか?

40: テルモゲマティスポラ(埼玉県) [CN] 2020/02/09(日) 12:52:35.64 ID:4aAJYb7N0
未だにVBAで飯食ってます

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

50: エルシミクロビウム(大阪府) [ニダ] 2020/02/09(日) 12:58:33.18 ID:NO2r2EaF0
PG言語なんて別に暗記しないでもその都度対応できるんで
エアプPGみたいな発言辞めてくれないかな

55: ストレプトスポランギウム(東京都) [US] 2020/02/09(日) 13:02:07.12 ID:IIrf34e70
vbaは文法が腹立つ

342: ロドバクター(家) [ニダ] 2020/02/09(日) 21:56:51.57 ID:S9q+B77q0
>>55
本当に!
中学英語やり直してるもん

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

75: ミクロモノスポラ(ジパング) [ZA] 2020/02/09(日) 13:11:14.88 ID:wEC4WyV90
そもそも会社のPCにPythonなんてインストール出来ないんだが
よってPowerShell最強

89: クトニオバクター(神奈川県) [ニダ] 2020/02/09(日) 13:24:10.61 ID:NLbuBZ/T0
>>75
これなんだよな

どのパソコンにもexcelくらい入ってるからな。
vbaとpowershellが最強。

windowsに標準でvisualstudioも入れといてほしいわ。

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

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

110: スフィンゴバクテリウム(東京都) [US] 2020/02/09(日) 13:44:32.48 ID:Z2HaSSeh0
.csvを使えば大抵のプログラムからデータを呼び出せる
まぁやりませんけどね

127: テルムス(大阪府) [US] 2020/02/09(日) 14:15:25.09 ID:HqMcHBQx0
VBA止めてPythonにするって話があるんだっけ
BASICで稼ぎ始めたゲイツは何を思うんだろ

141: カルディオバクテリウム(東京都) [US] 2020/02/09(日) 14:28:01.99 ID:lnEvo0e+0
最近のクラウドだとPowerShellも封じられてるなぁ

142: クロオコックス(ジパング) [US] 2020/02/09(日) 14:28:18.42 ID:uX1zOG170
日本のIT業界は無駄な作業を作るのが大好き

143: ビブリオ(埼玉県) [CN] 2020/02/09(日) 14:29:00.19 ID:654seYkG0
配布できないもん使うわけねえだろ
VBAは書き難いけど無理ってほどじゃねえし
そんな大層なこともしないししてはいかんもんだろ

151: スピロケータ(空) [ニダ] 2020/02/09(日) 14:37:18.20 ID:x7FhLFok0
VBAでソース管理ってどうしてる?
SVNとかGitで上手く管理できないかな

176: クトニオバクター(神奈川県) [ニダ] 2020/02/09(日) 14:58:19.15 ID:NLbuBZ/T0
>>151
VBAのソースをインポートとエクスポートするマクロ作ってsvnで管理してみたけど、なんか煩雑になって挫折したな。

203: ハロプラズマ(新日本) [FR] 2020/02/09(日) 15:26:26.77 ID:9jMsSQhJ0
>>151
エクスポートしたらテキストファイルなんだから使えばいい

153: キサントモナス(愛知県) [US] 2020/02/09(日) 14:38:21.02 ID:WfHhCNUB0
お前ら無職なのにプログラ厶だけはやたら知識あるよな
掲載スレ:https://hayabusa9.5ch.net/test/read.cgi/news/1581218926/