ただの備忘記録

忘れないように記録を残します。忘れるから記録に残してます。そして、その記録が役立つといいかな。

【Excelのメモ】表の行と列を入れ替える

2017年06月24日 | IT全般

エクセルで作った表の行と列を入れ替えたい場合の方法。
検索して調べたことなので簡単に記録しておきます。

①行列を入れ替える

【手順】
範囲選択してコピー→形式を選択して貼り付け→☑行列を入れ替える

注意点① 範囲外を相対参照する計算式があると参照エラーが発生します。

注意点② 値を貼り付けることで計算式がなくなり、参照エラーもなくなります。
しかし、元の表を書き換えたとき、値は連動しません。

②transpose関数

①の方法の注意点を解決する方法です。
traspose関数を使用することで、元の表を参照するため計算式も連動した表として並び替えができます。

【手順】
コピーしたい先を範囲選択(コピー元と行列の数を入れ替えてセルの数を合わせる)
→「=transpose(」と数式欄に入力→コピーしたい部分を範囲選択→「)」と数式欄に入力
→Ctrl+Shift+Enterキーを入力

これでコピー元からコピー先にtranspose関数が適用されます。

➊コピー先を範囲選択

❷transpose関数を入力

❸コピー元を選択(入力)、関数を閉じる

❹Ctrl+Shift+Enterキー(ここ重要!)

❺書式を設定し直して、表を整える

注意点① コピーしたい先の範囲選択に失敗した場合、先頭のセルにtranspose関数が入っていたら、やり直しが効きます。先頭のセルを含み、コピー先の範囲を選び直します。
数式欄に先頭のセルの数式が表示されているので、クリックして数式の入力状態にしてから、Ctrl+Shift+Enterキーを押します。選択範囲にtranspose関数が複製されます。

注意点② transpose関数を適用すると、その一部を変更することができません。
例えば、設定をしてから一部を削除したり入れ替えることもできません。


映画「メッセージ」

2017年06月10日 | 映画

会社のスタッフたちと映画を見てきました。
宇宙船のビジュアルが予告の時から気になっていた、ヴィルヌーブ監督の「メッセージ」です。

宇宙人とのコミュニケーションを主題としたSF映画かと思って見ると、見事に裏切られます。
見た直後は、情報を整理できず、何が主題だったのか良く分からなかったのですが、時間が経つと様々な要素がちりばめられていたことに気づきます。
みんなでディスカッションできたお陰かも知れません。

最初の問題は、宇宙人の目的です。それを知るために宇宙人の言語を解読しようとします。
世界の各地で宇宙人との対話が始まり、状況が共有されます。しかし、いつしか疑心暗鬼が増幅し混乱が起こります。
謎解きのようなものはありませんが、宇宙人が何をもたらすのか。それが大きな謎です。

そして、家族の物語。家族の過去と未来、人生の幸福と不幸・・・。それらを選択できるのか、または合わせて飲み込むのか。
最初は宇宙人との協調ができるのか?と思って見ていました。そこから人類国家の協調が問題となり、最後は家族の協調について考えさせられました。

最後に宇宙船が消え去ります。その幻想的な演出がとても美しく、まるで夢だったのかと疑うようでもありました。


【Photoshop JSX Script】ファイル情報の表示

2017年06月01日 | JavaScript

【基本機能】

Photoshopでファイルを開いている時に実行するとファイル名を取得し、現在時間を表示します。
それらを画面上に表示することで、処理時にファイル名やデータの作成時間を表示させるのが目的です。

ファイルの解像度を表示したり、自動的にレイヤー統合や上書保存も可能です。

↑作者名(任意に設定)と解像度(横×縦)
 
↑作者名とファイル名、現在の日付と時刻

【使い方】

ソース部分をコピーして、テキストエディタで保存します。
ファイルの拡張子は、jsxにします。
scriptフォルダに入れると、Photoshopのスクリプトメニューに表示されます。

名前を付けて保存したファイルを開いて表示(アクティブ)している状態でスクリプトを使用します。

【ソース】

//情報レイヤーの追加
#target photoshop

///// 初期設定 /////
//作者名
auther = "作者名";

//メインルーチン
defUnit = preferences.rulerUnits; //現在の単位設定を記録
    getInfo();
preferences.rulerUnits = defUnit; //元の単位に戻す

function getInfo() {
    //アクティブドキュメントを取得
    var doc = activeDocument;
 
    //パス取得
    var docPath = doc.fullName.fsName.toString();
    docPath = docPath.substring(0,docPath.lastIndexOf("\\")+1); //パス名

    //ファイル名取得
    var docName = doc.name;
    docName = docName.substring(0,docName.lastIndexOf(".")); //拡張子除去

    //ページサイズ取得
    preferences.rulerUnits = Units.PIXELS; //単位ピクセル
    //preferences.rulerUnits = Units.MM; //単位mm
    var doc_h = doc.height.value;
    var doc_w = doc.width.value;

    //データ情報の出力(見開き除外)
    var dateObj = new Date();
    var year = dateObj.getFullYear();
    var month = dateObj.getMonth() + 1;
    var date = dateObj.getDate();
    var hour = dateObj.getHours();
    if (hour < 10) hour = "0" + hour;
    var min = dateObj.getMinutes();
    if (min < 10) min = "0" + min;
    var timeStr = year + "/" + month + "/" + date + " " + hour + ":" + min; //日時
    
    //出力データ
    var text = "[" + auther + "] " + doc_w  + " x " + doc_h; //解像度
    //var text = "[" + auther + "] " + docName + " (" + timeStr + ") "; //ファイル名と時間

    var newLayer = doc.artLayers.add(); // 新規レイヤーを追加
    newLayer.kind = LayerKind.TEXT; // レイヤー種別をテキストレイヤーに設定
    newLayer.textItem.contents = text // テキストレイヤーに文字列を設定
    newLayer.name = "[INFO]"; //レイヤー名
    
    //表示位置
    preferences.rulerUnits = Units.MM; //単位mm
    var x = 20; //left
    var y = 10; //top
    newLayer.textItem.position = [x, y]; // レイヤー位置を指定
    newLayer.textItem.font = "MS-Gothic"; // フォント名
    newLayer.textItem.size = 10; // フォントサイズ
    newLayer.textItem.antiAliasMethod.NONE; //アンチエイリアス
    //newLayer.textItem.justification.CENTER; //行揃え
    
    //レイヤー統合
    //doc.flatten();
    
    //上書き保存
    //doc.save();
}