1 :エアロモナス(宮城県) [US]:2020/02/09(日) 12:28:46 ?PLT ID:uhkBIXIL0●.net
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」フォルダーに入っているとします。

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01174/011700003/3_25.jpg

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

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

https://imgur.com/BO5ZQ51.jpg

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

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

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01174/011700003/3_26.jpg

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

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

続きはソースで

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01174/011700003/


>>1
シートの特定部位が変更されたら
って判定もできるの?Pythonで

>>1
最近JavaScriptの勉強を始めたのに
Pythonのがいいのか?

>>1
この解説してる奴は素人か?
色々間違ってるだろ。
ここまで間違ってドヤ顔されると笑えてくるwww
11 :バクテロイデス(神奈川県) [US]:2020/02/09(日) 12:35:45 ID:9aDfiyYk0.net
他の人に通じない。
渡したあとにvba で作り直して!
いわれる


>>11
まあ、これだろな

vbaマクロ使えるリーマンは、
結構いるからな。経理とか税金とか
55 :ストレプトスポランギウム(東京都) [US]:2020/02/09(日) 13:02:07 ID:IIrf34e70.net
vbaは文法が腹立つ


>>55
配列のルールは良かれと思って導入した割に混乱のみを発生させたよな。
66 ::2020/02/09(日) 13:07:02.75 ID:QZf3aF000.net
サイズのでかいexcelでも早いんか?


>>66
早いんちゃう?

最適化されてるパッケージは超速だし
118 :クロロフレクサス(東京都) [BR]:2020/02/09(日) 13:50:50 ID:XGwfgj0P0.net
windowsにpython標準で入れてくれないかね


>>118パワーシェルがあるからなあ
120 :ディクチオグロムス(埼玉県) [GB]:2020/02/09(日) 13:51:49 ID:Qr5j2Xqi0.net
 
「ねぇあの超必殺技のコマンド長いからめんどくさくない?」とか言っちゃって

ずーーーーーーーーーーーーーーと小パンチとかだけで格ゲーしてて楽しいんすかね?wwww

そんなんだからイットハケンなんっすよwwwww

まぁその程度のイットハケンに与えることができる職場は発注元に対してこんだけ増援して頑張ってます感をだすだけの超炎上銀行系システムのでバッグあたりだけだろうから

そんなマヌケな現場で体を壊す前に田舎にでも帰って介護職について世のため人のために感謝されながら一生を過ごした方が身のため世のためですよ

 


>>120
自分が派遣だから他人も派遣に見えるのか?
123 ::2020/02/09(日) 14:01:00.10 ID:gWe2UwL30.net
PowerShell使いにくい
WSLはすき


>>123
power shellは、windowsのサービスや機能の停止,標準アプリのアンインストールの為のモノ
と思ってるわ
131 ::2020/02/09(日) 14:21:31.68 ID:uxltwPvx0.net
こういうアホってなんなんやろ。
一般化してるexcelvbaの方が情報も揃ってるし、
こっちの方がいいだろ。


>>131
目新しいものに飛びついて先駆者になりたいってのは、一定数いる
151 :スピロケータ(空) [ニダ]:2020/02/09(日) 14:37:18 ID:x7FhLFok0.net
VBAでソース管理ってどうしてる?
SVNとかGitで上手く管理できないかな


>>151
VBAのソースをインポートとエクスポートするマクロ作ってsvnで管理してみたけど、なんか煩雑になって挫折したな。
214 ::2020/02/09(日) 15:42:32.19 ID:0kKihHXN0.net
最近pythonをよく見かけるようになったな
初めて習得したスクリプト言語がpythonだから思い入れがあるけど
なんかあったのか?


>>214
ライブラリが沢山あるからだろ
でも、話題になってるからってだけでライブラリ管理の概念すら分からない連中まで入って来るのは正直迷惑
227 :デスルフレラ(埼玉県) [KR]:2020/02/09(日) 16:29:59 ID:5JBqSjfZ0.net
uwscの開発が止まってから俺はどこへ行けばいいのか
Pythonやるか


>>227
俺はappium 行こうと思ってる
winとiosとandroid が自動化できるらしい
勿論ブラウザも行ける
235 ::2020/02/09(日) 16:56:07.08 ID:ls1XRASB0.net
VBAの配列の仕様は使いにくいなあ。
メモリ的にも不安定だし、一新してくれないかねえ


>>235
多次元連想配列とかめんどいよなぁ
283 :プロカバクター(ジパング) [ニダ]:2020/02/09(日) 19:52:58 ID:FUJaOo640.net
Python入れて怒られる職場ってなんだ


>>283
お前は大手を分かってないな
変なソフト入れてやらかすバカが多すぎたせいで入れても良いソフトのホワイトリストが存在してて、それに載ってないソフトは全部検知されて後で叱られるんだぞ
開発職ならOKなんだろうが事務職や営業職はPythonなんざNGだ
289 :シュードアナベナ(福岡県) [US]:2020/02/09(日) 20:04:43 ID:YLu1m58W0.net
プログラミング未経験だけどPythonって簡単?


>>289
python自体は取っ付きやすが
「プログラミングとはどういうことなのか」を学ぶのは人による
298 :プニセイコックス(中華民国) [GB]:2020/02/09(日) 20:44:16 ID:ZHOGVAVE0.net
なんだこれカッコ閉じとかnextとかいらんのか?


>>298
改行でやってる
302 :キネオスポリア(大阪府) [US]:2020/02/09(日) 20:49:24 ID:qDif9I7n0.net
顧客に紙で書かせた書類を手打ちでぽちぽちやらされてんだがこれっておまえらならプログラム組んで自動にできるの?
しかもそれを何回か同じ情報をエクセルにぽちぽちやってんだが。
一回打ち込んだ情報ってなんらかの方法で複数のファイルに飛ばせない?
新入社員だからなんも言えないけど。


>>302
>顧客に紙で書かせた書類を手打ちでぽちぽちやらされてんだがこれっておまえらならプログラム組んで自動にできるの?

良いOCRがあれば

>一回打ち込んだ情報ってなんらかの方法で複数のファイルに飛ばせない?

飛ばせるよ

>>302
顧客に直接打たせるのが早い
310 :グロエオバクター(宮城県) [US]:2020/02/09(日) 21:01:05 ID:ec452o0l0.net
VBAでなんかやらなきゃ行けなくなったときのやる気のでなさは異常


>>310
なんか違いがあるのか

>>310
言語でやる気????
意味不明なんだけど。
326 ::2020/02/09(日) 21:32:53.09 ID:5rAXcXDX0.net
パイソンとかいうのだって、forとifとwhileとかと同じようなコマンド複雑に使って途中で頭こんがらがって、うわああってなるのどうせ変わんねぇんだろ


>>326
うん、変わらないね

優秀ならそうはならないようだけどね
350 ::2020/02/09(日) 22:04:18.93 ID:jraqhauB0.net
こういうの組むのはいいけど後任の奴がメンテに苦労してけっきょく使わなくなる


>>350
作り方がどうしても自己満足になるから、他人の書いたモノを継ぎたくもないんだろうな。
一から自分で作ったほうが気分がいい、みたいな。
365 ::2020/02/09(日) 22:32:52.93 ID:HF9LUejt0.net
vba習いに行ったらvbaみたいな終わってる言語よりC#やJavaScript 習った方がいいよって言われた


>>365
それぞれ得意な環境あるから
何がしたいかで選ぶべきだよね。
Excelマクロ作りたいならVBA1択。
377 :ユレモ(秋) [ニダ]:2020/02/09(日) 23:55:06 ID:KE0HwL460.net
excelよりもaccessでVer変わる度に動作不能になる馬鹿な物作る 町のシシテム屋さんは早く絶滅してほしい


>>377
version変わって動かなくなるとかあるのかね。
64bit版に上がって動かなくなることはよくある。
64bit版Officeは廃止してほしい。
380 ::2020/02/10(月) 00:45:02.77 ID:XgPlgMzb0.net
全然よくわからんのだけど。こういうのってもっと言語統一できないの?たくさんありすぎでは?


>>380
言語にも向き不向きがあるからな

最近の言語でよく使われているものは
勝手が少々違うけど基本は同じだから統一化する必要性は感じない

タクシーとトラックが統一化されないのと同じで
使う側が使い分けた方が都合がいい
396 :フランキア(ジパング) [CA]:2020/02/10(月) 06:04:06 ID:trvH+NZc0.net
業務用PCに内緒でPython入れる方法教えてくれ


>>396
厳しいところは無理だな。
C#ならゆうくんみたくコマンドラインでコンパイル出来るけど(ライブラリ追加とか面倒だね)
412 :メチロコックス(日本) [CN]:2020/02/10(月) 08:59:13 ID:/0uiHIhb0.net
会社でRPA進めてて、自動化するのはいいけど空いた時間分他の仕事が回ってくるだけだけら永久に楽にならない
だから率先して自動化するインセンティブは無い
適当なの作ってお茶を濁すwww


>>412

これ日本の悪いところだよな。
改善すればするほど仕事が増えるってやつ。
外資だと、仕事の割当は一緒で増加量も一定だから
効率化すればするほど楽になって
それができないやつが落ちこぼれてクビになる。
こっちが正しいよな
437 :プニセイコックス(群馬県) [US]:2020/02/10(月) 19:29:48 ID:e4JKDvu00.net
if True:
a = 1

print(a)

これなんで動くんだ


>>437
むしろどうして動かないと思ったんだ?
thenとかendifとかいるんじゃないかって話か?
VBAの文法なんて忘れたけど