カテゴリーアーカイブ OS

村上 著者:村上

【Excel】複数の条件に一致するデータの個数を求める「SUMPRODUCT」

現在扱っているExcelファイルの中に、一見しただけでは使い方がわかりにくい関数を見つけたので、自分メモとしてまとめ。
使用頻度が低そうで、これまた忘れてしまいそうだったので、備忘録もかねています。
その関数とは「SUMPRODUCT」です。
簡単に調べたところ、「掛け算と足し算をまとめて行える」「複数条件を全て満たすデータを探せる」関数とのこと。

なお、今回参考にした記事はこちらです。

「Excelの便利機能活用術」SUMPRODUCT関数で掛け算と足し算をまとめて行う|NECネクサソリューションズ
https://www.nec-nexs.com/bizsupli/useful/excel/23.html

 

早速使い方です。関数の式の構文としてはこんな感じ。

=SUMPRODUCT([配列1],[配列2],…)

上記のように書くことで、複数の配列の積を求めることができます。
例えば、下記のように書いた場合、

=SUMPRODUCT(A1:A5,B1:B5)

こういう意味になります。

=A1*B1+A2*B2+A3*B3+A4*B4+A5*B5

これも便利ですが、個人的には以下の方法をおすすめしたいです。というか覚えておきたい。

上の画像で使用している計算式は下記のとおりです。

=SUMPRODUCT((A1:A13>=10)*(B1:B13>=70))

数値自体は特に何の意味もないのですが、このように書くと「A1からA13の中で値が10以上かつ、B1からB13の中で値が70以上のセルの個数」を求めることができます。
ちなみに、この条件に一致するのはA7からB13の範囲なので、7つです。
なお、A列とB列のデータはセットで扱われるので、14にはなりません。
7つより、7セットといった方が分かりやすいかな。

 

以上、SUMPRODUCT関数のご紹介とその使い方でした。
複数の配列の積を求めたり、複数条件に一致するデータの個数を求めたりと、「複数」に強い関数のようですね。
ものによっては、長ったらしい計算式を書かずに済みそうです。
使えそうな箇所があれば、皆様も是非使用してみてください。

  • この記事いいね! (0)
asaba 著者:asaba

【androidJava】READ_EXETERNAL_STORAGEは必要なかった

ギャラリーから画像を読み込む機能を開発していてパーミッション関係のエラーで躓いたのでメモします。

ペイントの動きが悪かったのでそのまま抜粋してきました。

java.lang.SecurityException: Permission Denial:

writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=19325, uid=10589

requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()

 

ストレージを読み込むにはREADだけでなくWRITE_EXETERNAL_STORAGEのほうも必要だったみたいなので追加して解決。

<pre><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></pre>

このWRITE_EXETERNALSTORAGEは、READ_EXETERNAL_STORAGEの役割である読み込みも兼業しているので、実際に

マニフェストに書くのはこのWRITEのほうだけでも問題ないみたいですね。

このエラー、というかただ追加するだけの作業だったのですが、自分の備忘録を兼ねての投稿なのでそんなの知ってるよっていう

かたも多いかもしれませんがご容赦ください。

 

これでパーミッションの設定も無事にできたことなので近日にギャラリーから画像の名前を取得するコードを

載せようかと考えています。

画像を扱ったコードを正しく書ければ大分できることが増えますね~。

 

以下、参考にさせていただいたサイトです。

[Android] 外部ストレージにファイルを保存する WRITE_EXTERNAL_STORAGE

Android:KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域

Androidアプリ開発「外部ストレージアクセスのパーミッション」

  • この記事いいね! (0)
村上 著者:村上

【iPad】再起動を繰り返す「リンゴループ」になってしまった時の対処法

会社のiPadがまさにこの現象にハマってしまったので、再発した時のためにまとめ。
強制再起動もダメだったので、強制初期化を実行しました。

なお、今回参考にさせていただいた記事はこちらから。

iPhone・iPadが再起動を繰り返す「リンゴループ」になってしまった時の対処法まとめ|ハロー!パソコン教室イオンタウン新船橋校(船橋市北本町1丁目のパソコン教室) http://shinfunabashi.jugem.jp/?eid=1007

なお、強制初期化を行う前に、まずは強制再起動などを実行することをおすすめします。
やり方は、「ホームボタン+電源ボタンを長押し」するだけ。
場合によってはこれで直ることもあるらしいので、まずはこちらからお試しください。
で、だめだった場合、次は「SIMを抜いてから再起動」を行い、それでもだめなら「強制初期化」を実行しましょう。

 

さて、強制初期化のやり方ですが、まずはiPadの電源を落とします。
電源の落とし方は、再起動の時と同様に「ホームボタン+電源ボタンの長押し」ですが、再起動してリンゴマークが現れても、引き続き押し続けてください。
で、画面が消えたら、完全に電源が落ちた状態になります。
そうしたら、Macを用意し、「ホームボタンを押しながらPCと接続します。 すると、iPadの画面にiTunesのアイコンと、ケーブルのアイコンが表示されると思いますので、それが表示されたら、ここからはMacの操作を行っていきます。
iTunesを起動すると、リカバリモードが表示されるので、「更新」または「iPadを復元」を選択します。
私の場合は、まずiPadのソフトウェア更新から行い、それが完了したら、復元を実行しました。

実行中の画面はこんな感じ。 一度iPadとの接続が切れたのか、途中で失敗しましたが、再度やり直したところ、無事に初期化が成功しました!
言語設定とかアカウント設定を行い、とりあえず見慣れたホーム画面が表示されたので、今のところは問題なしと思われます!

 

初期化なので、当然データ等はきれいさっぱり消えてしまいましたが、とにかくリンゴループはしなくなったので、ひとまず安心です。
ただ、後輩君曰く、初期不良では…?とのことだったので、今後も再発するようであれば、修理に出すことも検討したほうが良さそうです。

  • この記事いいね! (0)
村上 著者:村上

【Excel】循環参照の修正方法と循環しているセルの見つけ方

Excelで表などを作成中にたまにやらかした「循環参照」について。
今回の記事では、そのエラー発生原因と修正方法、及び循環参照が発生している箇所の見つけ方についてです。

 

まず循環参照とは何か、についてですが、現在計算中のセル(自分自身)を含めてセルの計算を行ってしまった場合に発生します。
例としては下記のとおり。

D2のセルに、A2~D2 までの合計を求める計算式を入力しようとしています。
この場合、計算結果が表示されるD2のセルが計算式に入ってしまっているのでエラーになります。
こちらは入力ミスや範囲選択ミスによって発生することがほとんどで、今回も計算範囲の選択ミスのために発生しております。
そのため、D2に入力する計算式を、=SUM(A2:D2) から =SUM(A2:C2) に修正しましょう。

 

次に、循環参照をしてしまっているセルの見つけ方について。
今回のように計算式が少なければ特定は簡単ですが、おそらく実際の業務で使っているファイルでは計算が大量に行われているでしょうから、覚えておいて損はないはず。

で、探し方ですが、Excel画面上のリボンメニュー「数式」の中にある、「ワークシート分析」から行えます。
この中に「エラーチェック」という項目があるので、このボタンの右にある▼をクリックすると、循環参照の項目に循環参照になってしまっているセルの一覧が表示されるので、こちらを確認します。
画面イメージは下の画像のとおりです。

循環参照の一覧メニューに「$D$1」と表示されています。

もしくは、Excelの画面の一番下の緑のエリアがあるかと思いますが、循環参照等のエラーがある場合、下の画像のようにその左隅の辺りに「循環参照: D2」とエラーが表示されるので、こちらを確認してもいいかも。

個人的には、こちらの機能の方がよく使いますね。

 

以上、Excelの循環参照とその解決方法でした。
Excelの操作に慣れていないと、範囲指定の時などにミスをして発生することがあるかと思いますが、特に難しいエラーでもないので、淡々と落ち着いて対処してください。

  • この記事いいね! (0)
村上 著者:村上

【Android】Uriから画像のファイルパスを取得する方法

果たして需要があるかは分かりませんが、私はあったので備忘録としてまとめ。
Anrdoidアプリで、Uriから画像のファイルパスを取得する方法です。
参考にさせていただいたサイトは確かこちら。

ギャラリーからの画像読み込みでエラーが出るときの修正方法|Workpiles
http://workpiles.com/2014/07/android-gallary-intent/

 

実装方法は下記のとおりです。
関数になっているので、このままコピー&ペーストしていただければ動くかと思います。

private String getPictPath(Uri uri) {
    String id = DocumentsContract.getDocumentId(uri);
    String selection = "_id=?";
    String[] selectionArgs = new String[]{id.split(":")[1]};
    File file = null;

    Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.MediaColumns.DATA}, selection, selectionArgs, null);

    if (cursor != null && cursor.moveToFirst()) {
        file = new File(cursor.getString(0));
    }
    cursor.close();

    if(file != null){
        return file.getAbsolutePath();
    }
    return null;
}

getPictPath() の引数に、変換したい画像のUriを渡せばOKです。

 

以上、簡単ですが画像のUriからファイルパスを取得する方法でした。
実際に使う機会は多くはないと思いますが、参考にしていただければと思います。

  • この記事いいね! (0)
村上 著者:村上

【Excel】オートフィル機能を使って連続データを簡単に入力する

知ってるよ!という人の方が多いと思いますが…Excelのオートフィル機能についてまとめ。
というのも、奇数や偶数、10飛びなどの連続データを作ることもできるという記事を見つけ、そちらのご紹介をしたいがために、この記事を書いています。

 

まず、一般的な連続データの入力方法について。
連続データを入力したいエリアの最初のセルに、連続データの最小値を入力します。
下の画像では、A1セルに1を入力しています。

で、数値入力後、A1のセルを選択し、その時に選択セルの右下に表示される四角形をドラックします。
画像だと下方向にドラックしています。
しかし、これだけだと単に1がコピーされるだけなので、ドラック後に現れるオートフィルのメニューアイコンから「連続データ」を選択します。


すると、上の画像のように、連続データに変更されます。
通常の連続データの入力方法は以上です。

なお、ドラックの際に「Ctrl」を押していると、最初から連続データが入力されます。
ちなみに、連続データは数字だけでなく、日付にも対応しています。
また、日付の場合は、日の連続データか月の連続データかを選ぶこともできます。

 

ここからは、奇数・偶数などの若干特殊な連続データの入力方法について。
参考に…というか、紹介させていただきたい記事はこちらから。

オートフィル機能で連続データを入力するいろいろなテクニック | すぐに活かせる!Excel使いかたレッスン | 活用ガイド | パーソナルコンピューター VAIO® | サポート・お問い合わせ | ソニー
https://www.sony.jp/support/vaio/guide/excel/002.html

といってもそんなに複雑なことをしているわけではなく、例えば奇数の場合は、下のように 1 と 3 をセルに入力し、この両方のセルを選択した状態で、右下の四角形をドラックしてセルをコピーするだけです。

一応、説明のためのスクリーン画像を追加しましたが…こちらが不要なくらい簡単です。

なお、偶数を入力する場合は 2 と 4 をセルに入力し、あとは上の手順同様にこの両方のセルを選択・コピーするだけです。

 

以上、Excel で連続データを入力する方法でした。

  • この記事いいね! (0)
takahashi 著者:takahashi

macOS Mojaveでとにかく簡単に多段SSHしたい! -SSH Tunnel Manager編-

前回の記事でmacOSでも簡単にSSHTunnelをできるようにしたいと探した結果、Coccinellaというアプリを発見し、試しては見たものの残念ながらmacOS Mojaveではうまく動かなかった…という話をご紹介しました。

今回は、いろいろ探していて見つけたもう一つのSSHTunnelアプリ”SSH Tunnel Manager“を試してみたいと思います。

起動するとこんな画面が出てきます。

まず、設定画面左下の+ボタンを押して、新しい項目を追加します。

nameには何のサーバーかわかりやすいような名前、Loginは踏み台サーバー側のユーザーid、Hostはホスト名、Pirtにはポート番号をそれぞれ指定します。

今回はlocalhost経由で目的のサーバーにつなげる設定(例えば127.0.0.1:1222につないだら踏み台サーバー内のネットワークの192.168.0.110:22に転送する)にしたいので、画像のように設定値を入れていきます。

少しわかりづらいですが、左側のportがlocalhostにマッピングするポート番号、IPと右側のportには接続先サーバーの情報を入力します。

また、Optionsボタンを押すと詳細な設定を行うことができます。

この辺りは使用しているサーバーの設定やお好みに合わせて設定してください。
ちなみにsocks4によるプロキシも利用できるようです。

設定が完了すると、こちらのウインドウに接続先サーバーが追加されます。

項目の右側にある”Start”をクリックすると、接続処理が開始されます。

Coccinella同様に通知領域に追加することも可能で、その場合は通知領域にあるアイコンをクリックして表示されるコンテキストメニューから接続することも可能です。

なお、秘密鍵を使った接続の場合は、あらかじめ.bashrcなどに”ssh-add”コマンドを記述して秘密鍵を事前にインポートするように設定しておく必要がありそうです。

それでは早速接続してみます。

とりあえず、接続はうまく行った模様。
後はほかのアプリケーションから接続できるかですが…

おおおバッチリ繋がりました…!!!
特に接続が切れたりすることもなく、安定した接続を行うことができました。

今後家のサーバーにアクセスするとき、これでmacOSからも踏み台サーバーを意識することなく使うことができそうですε-(´∀`*)ホッ

macOSからの多段接続にお困りの方はぜひ試してみてください。

  • この記事いいね! (0)
村上 著者:村上

【Excel】棒グラフの目盛りを0始まりにする方法

横棒グラフを扱っているとき、たまに 横軸の目盛りが0から始まらないグラフがあったのでその対処法について。
ちなみに、Excel のバージョンは Excel 2013 です。
というか、そもそもなぜこの現象が発生するのか…それについては現在調査中です。
Excelさんのありがた迷惑な自動補正だったりするのでしょうか…?

 

さて、目盛りの修正方法ですが、まずメモリを修正したいグラフを選択します。
そうすると、下の画像のようにプラスのメニューボタンが現れると思うので、そこから 軸 > その他のオプション を選択します。

オプションを選択すると、下の画像のようなメニューが画面右に現れると思います。

そうしたら、このオプションの「境界値」から「最小値」を 0 に変更します。
作業としては以上で終了です。
グラフにもこの変更が反映され、正しいパーセンテージでグラフが表示されているかと思います。

 

以上、Excelで作成したグラフの軸の目盛りが0始まりでない時の対処法でした。
グラフの割合がおかしい!というときには、まずこちらの方法で目盛りの最小値を確認してみることをおすすめします。

  • この記事いいね! (0)
takahashi 著者:takahashi

macOS Mojaveでとにかく簡単に多段SSHしたい! -Coccinellida編-

以前、Windowsでは簡単に多段接続したファイルのやり取りができるソフト”WinSCP”をご紹介しましたが、自分はmacOS(Mojave)も使っているので同じことを実現したいなーと思っていました。

しかし、macOSはWindowsと打って変わって、多段接続に対応したアプリがなかなか見つかりません。

もっともmac自体にはもともとOpenSSHクライアントがインストールされているので

ssh -v -N  -L ローカルホストのip1:ローカルホストのポート1:接続先ホストのip1:接続先ホストのポート1 [-L ローカルホストのip2:ローカルホストのポート2:接続先ホストのip2:接続先ホストのポート2 -L ローカルホストのip3:ローカルホストのポート3:接続先ホストのip3:接続先ホストのポート3 -L ...] -o ConnectTimeout=15 -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o TCPKeepAlive=yes [-i 公開鍵認証の場合は秘密鍵のパス ] -p 踏み台サーバーのsshポート 踏み台サーバーのホスト
#※[]部分は必要な時のみ入力

のようにすれば繋がるのですが、毎回こんなコマンドを打つのはめんどくさい…

とりあえず上のコマンドをシェルスクリプトにし、パスの通っているディレクトリに置いたので、コマンド一発で繋げられるようにはなりましたが、Windowsでの利便性と比較すると、ターミナルを開いてコマンドを打つのですら正直めんどくさく感じます。
どうせならVPN見たくGUIからワンクリックでサクッとつながってほしい…と思い、いろいろ探した所、よさげなアプリを発見しました。

Coccinellida

その名も英語で”てんとう虫”を意味する”Coccinellida”

起動するとタスクバーに常駐するので、右クリックからPreferenceをクリックして設定画面を表示。

Tunnelsタブを開くと接続先サーバー設定が表示されるのでaddをクリック

Generalタブには踏み台サーバーの接続情報を入力し、

Port Fowardingタブで踏み台サーバーの先の目的のサーバーへの接続情報(IP・ポート)と紐づけるローカルホストのIPとポートを入力していきます。

設定完了後、設定画面を閉じ、再度通知アイコンを右クリックすると、先ほど追加した接続情報が追加されているので、クリックすれば自動でSSHポートフォワーディングが開始されます。

通知にestablishedと出てきたので、これで繋げられる…!
…と思ったのですが、試しにTerminalから踏み台先のサーバーへつなげようとしても、”ポートが開いていない”という旨のエラーが出て、接続できません。

他のアプリでも接続を試してみましたが、目的のサーバーに接続することはできませんでした。

調べてみるとCoccinellidaは2015/11/25以降アップデートされておらず、Sierra以降はCoccinellidaを使ってSSHTunnelすることはできなくなってしまったようです。

macOS10.12 Sierra でトンネル接続 – Digital Boo

その代わり上記の記事でCoccinellidaとは別のSSHTunnelソフトSSH Tunnel Managerを見つけました。

次回はこのSSH Tunnel Managerで接続できるか試してみたいと思います。

  • この記事いいね! (0)
takahashi 著者:takahashi

bashシェルスクリプトで引数の取得と空文字を判定する方法

以前村上さんが 【備忘録】MacのFinderで隠しファイル・フォルダを表示する方法 という記事を投稿されてましたが、自分の場合はこちらの内容を参考に簡単に切り替えれるようにシェルスクリプトでon offをできるようにしています。

とりあえず簡単に作ったのでめっちゃ簡素です(;´∀`)

#!/bin/bash

echo 'please type "true" or "false": '
read com

if [ $com = "false" ]; then 
  defaults write com.apple.finder AppleShowAllFiles FALSE
  killall Finder
  echo "隠しファイルが非表示になりました。"
fi

if [ $com = "true" ]; then
  defaults write com.apple.finder AppleShowAllFiles TRUE
  killall Finder
  echo "隠しファイルが表示されました。"
fi

exit 0

シェルスクリプトを作るとき、とりあえず簡単に作っておこうと思って

コマンド実行->隠しファイルの表示、非表示(true or false)を入力

という作りにしたのですが、これだけの操作でわざわざ2段階にする必要ないよなぁ、と思い、

コマンド true
コマンド false

でできるようにしようと思いました。

bashのシェルスクリプトで引数を認識させるのはとても簡単で、

コマンド 引数1 引数2 ... 引数n

とした場合に、引数の値をとる場合は

引数1: $1
引数2: $2

引数n: $n

という変数でそれぞれ取ることができます。
(引数10個目以降の引数の取得については${10}といった書き方をする必要があるようです。)

ただ、折角コマンド内で入力を読み込む処理も書いてあったので、今回は引数が何も入力されなかった時に、従来のtrue or falseを質問するプロンプトを表示するように変えてみました。

ここで”何も入力されなかった”、つまり空文字を判定する必要が出てきます。

PHPなどでは

//もし空だった場合
if($hoge == "")
{ 
    /*処理*/ 
}

みたいに書きますが、bashの場合は

#hogeが空だった場合は処理を実行
if [ -z "$hoge" ]; then
  #処理
fi

と書きます。
ちなみに、”空でなかった場合”に処理をさせたい場合は

#hogeが空でなかった場合は処理を実行
if [ -n "$hoge" ]; then
  #処理
fi

と書けばよいそうです。

これを踏まえてこんな感じに変更してみました。

#!/bin/bash

com=$1 #引数取得

if [ -z "$com" ]; then #もし引数に値が入ってなければ
  echo 'please type "true" or "false": ' 
  read com #再入力を要求
fi

if [ $com = "false" ]; then #"false"が指定されたら
  defaults write com.apple.finder AppleShowAllFiles FALSE #finderで隠しファイルを隠すコマンドを実行
  killall Finder
  echo "隠しファイルが非表示になりました。"
fi

if [ $com = "true" ]; then #"true"が指定されたら
  defaults write com.apple.finder AppleShowAllFiles TRUE #finderで隠しファイルを表示するコマンドを実行
  killall Finder
  echo "隠しファイルが表示されました。"
fi

exit 0

この内容をテキストファイルとしてユーザーがアクセスできる場所(例えば/usr/local/bin/ とか /opt/ とか)に保存し、”chmod +x”などを行って実行権限を与えておきます。
これでお手軽隠しファイル表示/非表示コマンドの完成です。

bashなどのシェルが使える環境では、こういったシェルスクリプト(バッチファイル)を作っておくことで、複数のコマンドを打たないといけないような操作を1コマンドで済ませたりすることができるようになります。

便利なので是非活用してみてください。

  • この記事いいね! (0)