【Excel】複数条件のデータが存在するか確認したい【SUMPRODUCT編】
検索とかで、FindとかVLOOKUPとかMATCHとか見ててふと、
「複数の組み合わせを持つデータが存在するかどうかはどうやって確認するんだろう?」
と思ったので、少し調査。
ものすごく雑な例を出すとこんな感じ。
こんな感じで似たような組のデータがあります。
左側と右側で比較すると、同じ組み合わせはありますが、違う組み合わせもあります。
この時、「左右どちらも含まれる組み合わせはどれか?」という確認がしたい、
というのが今回の条件です。
で、色々調べましたが、SUMPRODUCT関数に行き着きました。
参考にしたページ
Excel(エクセル)基本講座:SUMPRODUCT関数の使い方
SUMPRODUCT関数は、
・配列に対応する要素間の席を計算し、その和を返す
・複数条件の件数をカウントしたり、合計数を出せる ←ここがポイント
上記を参考に記述してみました。
一行目の関数式を書くとこんな感じ
=SUMPRODUCT(($A$1:$A$10=D1)*($B$1:$B$10=E1))
(以降下のセルはオートフィルで埋める)
一つ目は左組のアルファベット列の中で、D1(右組一番上のアルファベット)と同一である。
二つ目は左組の数値列の中で、E1(右組一番上の数値)と同一である。
この2つの式の論理積を取るわけですから、
右側を支点にして、「左側のアルファベットと左側の数値の組み合わせが同じ数を表示する」
ということになります。
出力結果としても、左側の組の中で、右側の組と同じ組み合わせなのは、
A-1(2つ)
B-1(1つ)
C-4(1つ)
E-5(2つ)
ということですね。
列が分かれた複数の組み合わせの中から、同じ組み合わせを抽出するときはSUMPRODUCT関数を使えば良さそうですね。
VBAも書いてるんですが、
VBAは性能を気にしながらコーディングしなきゃいけないらしいので、
コーディングするときは非効率なアルゴリズムは避けたほうがよさそうですね。
本買うならここら辺あたり買いたいなぁ。
入門者のExcel VBA―初めての人にベストな学び方 (ブルーバックス)
- 作者: 立山秀利
- 出版社/メーカー: 講談社
- 発売日: 2012/04/20
- メディア: 新書
- クリック: 19回
- この商品を含むブログ (8件) を見る
Excel VBA 本格入門 ~日常業務の自動化からアプリケーション開発まで~
- 作者: 大村あつし
- 出版社/メーカー: 技術評論社
- 発売日: 2015/05/16
- メディア: 大型本
- この商品を含むブログ (1件) を見る
【2017/10/24 追記】
同条件をCOUNTIFS関数を用いた場合どうなるか書きました。
【python】pythonでsyslog出力
python勉強中…。
syslogを出力したくなったので調査。
https://docs.python.jp/2.7/library/syslog.html
えぇ…出力するだけなら
syslog.syslog('test syslog')
syslogをimportして上記メソッド書くだけ…。
これだけで良いらしい…。ほんとに?
実際にやってみる。
import syslog syslog.syslog('syslog test')
出力結果
……… Oct 7 12:54:54 localhost test_syslog.py: syslog test
ほんとに出てる…。すごいな…こんなもんなのか?
Cで作った時はめんどくさかったような気がするけど…。
後はファシリティとかログとかもろもろをちゃんと指定する処理入れれば、普通にsyslog記述処理実装できるのか…。
時代は進んでいる…。
↓買いました。
ゲームを作りながら楽しく学べるPythonプログラミング (Future Coders(NextPublishing))
- 作者: 田中賢一郎
- 出版社/メーカー: インプレスR&D
- 発売日: 2017/03/24
- メディア: Kindle版
- この商品を含むブログを見る
【teraterm】teratermマクロでよく使うコマンドとSSHログイン
今回はteratermマクロでよく使うコマンドです。
sendln … 入力を行う(改行入り)
wait '文字列' … '文字列'が出力されるまで待つ
strconcat A B … AをBに文字列結合
connect A … Aに接続
基本こんだけで大丈夫でしょう。
えっ?これだけ?と思うかもしれませんが、意外といけます。
「あれ実行してこれ実行してこのファイル移動させてあのディレクトリで実行してあぁぁあめんどくさい!!」
となるときは、マクロ作成をおすすめします。
毎日このルーチンワークしなきゃいけなくて…という場合であればなおさらです。
また、Teratermでどこかのサーバにログインするときにも有用です。
サーバにログインするときのファイルはあらかじめ作っておいて保存しておきましょう。
たとえサーバが変わってもIPアドレスを変更して保存しておくだけで良いですからね。
大体同じなので、下記をどこかに保存しておくと良いと思います。
;; 接続先ホスト/ユーザ名/パスワード設定 HOSTADDR = '127.0.0.1' USERNAME = 'testuser' PASSWORD = 'testpassword' ;; COMMANDの文字列を組み立て COMMAND = HOSTADDR strconcat COMMAND ':22 /ssh /2 /auth=password /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /password=' strconcat COMMAND PASSWORD ;; 接続 connect COMMAND end
HOSTUADDR、USERNAME、PASSWORDは、環境に応じて書き換えましょう。
なお、通常SSH接続は22番ポートで接続するので、上記はそのままポート番号が書いてありますが、
環境によっては別のポート番号が指定されている可能性があります。
その場合は新しくPORT番号の変数を作成して、strconcatで文字列結合させましょう。
… HOSTADDR = '127.0.0.1' USERNAME = 'testuser' PASSWORD = 'testpassword' PORTNUM = '22' COMMAND = HOSTADDR strconcat COMMAND ':' strconcat COMMAND PORTNUM strconcat COMMAND ' /ssh /2 /auth=password /user=' strconcat COMMAND USERNAME …
teratermをよく使う方は、マクロも使えるようになっておくと、効率化が図れます。
上記コマンドを覚えておくだけでも、ルーチンワーク発生時にマクロ化することができると思います。
- 作者: 中島能和
- 出版社/メーカー: 秀和システム
- 発売日: 2015/02/07
- メディア: 単行本
- この商品を含むブログを見る
ショートカットキーまとめ(2017/10/1現在)
私は仕事の都合上、Linux系OS上で作業することが多いため、
よくviを使用します。
vimが入ってない時もあります。違いはまだ分かりません。
viで筆者がよく使うのコマンドモードのショートカットキーについて 思い出しながら記載。
コマンドモード
i…入力モード
v...ヴィジュアルモード(範囲指定とかに使う)
dd(dキーを2回)...一行削除(正確には切り取り?)
yy(yキーを2回)...一行コピー
p...次行に貼り付け
x...一文字削除(カーソル位置)
Shift + p ...カーソル位置から貼り付け
:%s/[対象文字列]/置換文字列/...置換コマンド
最後にオプションを付与する事も出来る。
g…全範囲対象 c…置換をするか毎回聞く
:%s/\t/\n/gc # タブを改行に置換
Ctrl + f...ページダウンと同じ
Ctrl + b...ページアップと同じ
/... 検索
/検索 # 検索という文字列を検索
普段使いはこのくらい。 本当はvi上で出来ることはもっとあるはずなんですが、 あまり開拓していないのでこんな感じですね。
Linux系OSはサーバ上で動かすときCUIでしか動かせない!でもテキストファイルをいじりたい!という時はあると思います。 viは大体入っているのでマスターしておくと、どんな状態の機体が来てもやり過ごせます。
開発として使用しており、且つVimが使用できた場合、ctagsを導入しておくと、タグジャンプが実行でき楽です。
ctagsを使用しtagファイルを生成していたとき
Ctrl + ] カーソル位置にある関数の定義へジャンプ Ctrl + t ジャンプ元に戻る
折を見て買おうかな…↓
- 作者: 山森丈範
- 出版社/メーカー: 技術評論社
- 発売日: 2010/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 101回
- この商品を含むブログ (11件) を見る