20141004 詰excel

244
#AppsForOffice 詰Excel/くらもとたつし (@ta2c) 1 2014/10/4 くらもとたつし #AppsForOffice 詰Excel Office用アプリの ツカイドコロ

Upload: ta2c

Post on 18-Dec-2014

627 views

Category:

Technology


0 download

DESCRIPTION

実務で出てきそうな課題に対するOffice用アプリのツカイドコロと最善手の考察

TRANSCRIPT

Page 1: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

2014/10/4くらもとたつし#AppsForOffice

詰ExcelOffice用アプリの

ツカイドコロ

Page 2: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

くらもとたつし

発表者について

@セカンドファクトリー

Page 3: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

UI & CLOUD Professional

コンサルトレーニング設計、開発

自社プロダクト開発

セカンドファクトリー

Page 4: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

くらもとたつし

開発に従事

TatsushiKuramoto

@ta2c

ta2c

Page 5: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

国内旅行

Page 6: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

47

観光した県の数

国内旅行

Page 7: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

4147

国内旅行観光した県の数

Page 8: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

前回

「slideshare ta2c」でネットで検索

Page 9: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

今回

今夜以降「slideshare ta2c」でネットで検索

Page 10: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

0

データ サンプルアプリ

<お約束>サンプルに関して、万一ユーザーまたは第三者が何らかの損害を被った場合においても、一切の責任を負うことは出来ませんのでご了承ください。

http://1drv.ms/Zho851

Page 11: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

1

補足:

内容は個人の見解であり所属する組織の公式見解ではありません

Page 12: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

2

Page 13: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

3

今日はこんな話をします

Page 14: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

4

詰将棋

将棋の実践的な問題集(相手の王様を倒したら勝ち)

Page 15: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

5

6 5 4 3 2 1

角桂

金桂

Page 16: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

6

6 5 4 3 2 1

桂歩

金桂

Page 17: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

7

6 5 4 3 2 1

四銀

桂歩

金桂

2四銀角

Page 18: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

8

6 5 4 3 2 1

四銀

金桂角

2四銀

2五桂

Page 19: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

9

将棋の実践的な問題集詰将棋

Page 20: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

0

Excelの実践的な問題集

将棋の実践的な問題集詰将棋

詰Excel

Page 21: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

1

300件の顧客データに、●●●列を追加して。

上司

Page 22: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

2

300件の顧客データに、名前列を追加して。

上司

Page 23: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

3

300件の顧客データに、名前列を追加して。

上司

Page 24: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

4

300件の顧客データに、名前列を追加して。

上司

Page 25: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

5

300件の顧客データに、名前列を追加して。

上司

D4銀

Page 26: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

6

300件の顧客データに、名前列を追加して。

上司

D5圭

D4銀

Page 27: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

7

Excelの実践的な問題集

将棋の実践的な問題集詰将棋

詰Excel

Page 28: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

8

Excelの実践的な問題集詰Excel

Office用アプリの使いどころ

Page 29: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

9

Page 30: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

0

氏名(フルネーム)→名前抽出

Page 31: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

1

300件の顧客データに、名前列を追加して。

上司

<前提>姓と名が

全角スペースで区切られている

Page 32: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

2

シンキングタイム20秒

Page 33: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

3

[A]Excel関数 [B]Office用アプリ

Page 34: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

4

[A]Excel関数

田崎 岳

全角スペースより右の文字列を取得

[B]Office用アプリ

Page 35: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

5

全角スペースより右の文字列を取得

[A]Excel関数

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

Page 36: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

6

[A]Excel関数 [B]Office用アプリ

ドラッグ

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

Page 37: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

7

[A]Excel関数 [B]Office用アプリ

ドラッグ

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

DE

MO

Page 38: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

8

[A]Excel関数 [B]Office用アプリ

ダブルクリック※おすすめ

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

Page 39: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)3

9

[A]Excel関数 [B]Office用アプリ

全角スペースより右の文字列を取得

左の行数分コピーされる

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

Page 40: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

0

[A]Excel関数

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

Page 41: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

1

[A]Excel関数

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

田崎 岳

全角スペースで分割し文字列の2番めを取る

① ②

Page 42: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

2

[A]Excel関数

全角スペースより右の文字列を取得

<C2の値>.spl i t ( " " ) [1]

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

Page 43: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

3

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script><script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script><script>

// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数

全角スペースより右の文字列を取得

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

Page 44: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

4

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script><script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script><script>

// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数

全角スペースより右の文字列を取得

100行

[セルD2に入力]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

[B]Office用アプリ

Page 45: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

5

[A]Excel関数 [B]Office用アプリ

2列を選択して、実行ボタンを押す

Page 46: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

6

[A]Excel関数 [B]Office用アプリ

2列を選択して、実行ボタンを押す

太郎花子三郎

求めたい値が右列に入る

Page 47: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

7

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

全角スペースより右の文字列を取得

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ①範囲選択したn行x2列

の値群を配列でゲット

②左列から名前を抽出(Array.split(“ “)[1])

④ 範囲選択したn行x2列に配列をセット

for文で②③処理繰り返し。

③右列に名前をセット

Page 48: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

8

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ①範囲選択したn行x2列

の値群を配列でゲット

Page 49: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)4

9

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ①範囲選択したn行x2列

の値群を配列でゲット

Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);

Page 50: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

0

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ①範囲選択したn行x2列

の値群を配列でゲット

Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

Page 51: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

1

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

全角スペースより右の文字列を取得

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ

②左列から名前を抽出(Array.split(“ “)[1])

③右列に名前をセット

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”太郎”],[“鈴木 花子” , ”花子”],[“斉藤 三郎” , ”三郎”]

]

for文で②③処理繰り返し。

Page 52: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

2

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ④ 範囲選択したn行x2列に配列をセット

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: “matrix” }, コールバック関数);

[[“山田 太郎” , ”太郎”],[“鈴木 花子” , ”花子”],[“斉藤 三郎” , ”三郎”]

]

Page 53: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

3

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ④ 範囲選択したn行x2列に配列をセット

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: “matrix” }, コールバック関数);

[[“山田 太郎” , ”太郎”],[“鈴木 花子” , ”花子”],[“斉藤 三郎” , ”三郎”]

]

太郎花子三郎

Page 54: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

4

[セルD2]=RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

<!DOCTYPE html><html>

<head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>詰Excel</title><script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

<script>// 変換前の2次元配列var beforeMatrix = [];// 変換後の2次元配列var afterMatrix = [];// 実行中の行番号var convertCounter = 0;

Office.initialize = function(reason) {}window.onload = function() {

var btn = document.getElementById('executeButton');btn.onclick = function () {

buttonOnClick();}// タイトルエリアを出力writeTitle(title);

}

// ボタンクリック時のイベントハンドラfunction buttonOnClick() {

writeResult('実行中');

// 選択したセル(n行x2列)の値をすべて取得Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,

function (result) {if (result.status === Office.AsyncResultStatus.Succeeded) {

// 変換後の2次元配列afterMatrix = [];// 変換前の2次元配列beforeMatrix = result.value;

convertCounter = 0;executeConvertItem();

} else {writeResult('取得時エラー:' + result.error.message);

}}

) ;}

// 1件分変換を実行するfunction executeConvertItem() {

// 変換前のアイテムvar targetRow = beforeMatrix[convertCounter];// 左のセルvar originalValue = targetRow[0];

convertValue(originalValue, executeConvertItemCallback);}

// 1件分変換を実行したあとのコールバック関数function executeConvertItemCallback(originalValue, targetValue) {

// 変換後のアイテムvar convertRow= [originalValue, targetValue];afterMatrix.push(convertRow);

convertCounter ++;if (convertCounter >= beforeMatrix.length) {

// 変換後の値を設定updateAfterValue();

} else {// 再帰的呼び出しexecuteConvertItem();

}}

// 選択したセル(n行x2列)に変換後の値をセットfunction updateAfterValue() {

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: "matrix" },function (result) {

if (result.status === Office.AsyncResultStatus.Succeeded) {writeResult('実行完了しました');

} else {writeResult('セット時エラー:' + result.error.message);

}}) ;

}

// タイトルエリアを出力function writeTitle(inString) {

document.getElementById('titleArea').innerHTML = inString;}// 実行結果を出力function writeResult(result) {

document.getElementById('resultArea').innerHTML = result;}

// ============================================// 個別プロパティ、メソッド// ■■■■■■■■■■■■■■■■■■■■■■var title = "case.1";function convertValue(beforeValue, inCallBack) {

// 全角スペースで文字列を分割var splitArray = beforeValue.split(" ") ;var afterValue = splitArray[1];inCallBack(beforeValue, afterValue);

}// ■■■■■■■■■■■■■■■■■■■■■■

</script></head><body>

<div id="titleArea"></div><button id="executeButton" type="button">実行</button><div id="resultArea"></div>

</body></html>

[A]Excel関数 [B]Office用アプリ④ 範囲選択したn行x2列に配列をセット

Office.context.document.setSelectedDataAsync(afterMatrix, { coercionType: “matrix” }, コールバック関数);

[[“山田 太郎” , ”太郎”],[“鈴木 花子” , ”花子”],[“斉藤 三郎” , ”三郎”]

]

太郎花子三郎

DE

MO

Page 55: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

5

[A]Excel関数①範囲選択したn行x2列

の値群を配列でゲット

④ 範囲選択したn行x2列に配列をセット

②左列から名前を抽出

for文で②③処理繰り返し

③右列に名前をセット

[セルD2に入力] =RIGHT(C2,LEN(C2)-FIND(" ",C2,1))

全角スペースより右の文字列を取得

[B]Office用アプリ

Page 56: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

6

[A] Excel関数 [B]Office用アプリ

○(1行で終わり) 1から作る △(コード量多い+Webサーバ必要)

Page 57: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

7

[A] Excel関数 [B]Office用アプリ

○(1行で終わり) 1から作る △(コード量多い+Webサーバ必要)

◎(変更に追従) 誰かが作ったものを使う

○(変更に追従しない

Page 58: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

8

[A] Excel関数 [B]Office用アプリ

○(1行で終わり) 1から作る △(コード量多い+Webサーバ必要)

◎(変更に追従) 誰かが作ったものを使う

○(変更に追従しない

田崎 今日子 今日子

Page 59: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)5

9

[A] Excel関数 [B]Office用アプリ

○(1行で終わり) 1から作る △(コード量多い+Webサーバ必要)

◎(変更に追従) 誰かが作ったものを使う

○(変更に追従しない

・右記以外は[A]Excel関数使ったほうがよい。

ツカイドコロ ・あるOffice用アプリの一部の機能・Wordで使う

Page 60: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

0

Page 61: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

1

※今日のOffice用アプリ動かしてみたい

Page 62: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

2

[A]VisualStudio 2013(有償版)を使う

(Professional以上)

[B]無料で頑張る

※今日のOffice用アプリ動かしてみたい

Page 63: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

3

[A]VisualStudio 2013(有償版)を使う

[B]無料で頑張る

Page 64: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

4

[A]VisualStudio 2013(有償版)を使う

[B]無料で頑張る

マニフェストXML

html

Page 65: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

5

[A]VisualStudio 2013(有償版)を使う

[B]無料で頑張る

1. 今日の提供ソースのうち、htmlのみ用意

マニフェストXML

html

Page 66: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

6

[A]VisualStudio 2013(有償版)を使う

[B]無料で頑張る

2. Visual Studio 2013 とUpdate3をインストール

• ※参考Visual Studio 2013 90 日間の無償評価版

http://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs#DownloadFamilies_1• Visual Studio 2013 Update3http://www.microsoft.com/ja-jp/download/details.aspx?id=43721

Page 67: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

7

[B]無料で頑張る

3. Visual Studio 2013を起動。4. 新しいプロジェクト>Office 用アプリを選択

[A]VisualStudio 2013(有償版)を使う

Page 68: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

8

[B]無料で頑張る

5. 「次へ」「次へ」

[A]VisualStudio 2013(有償版)を使う

Page 69: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)6

9

[B]無料で頑張る

5. 「次へ」「次へ」

[A]VisualStudio 2013(有償版)を使う

Page 70: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

0

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

6. App¥Home¥Home.htmlを開き、今日のhtmlソースで全行差し替え。

Page 71: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

1

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

6. App¥Home¥Home.htmlを開き、今日のhtmlソースで全行差し替え。

Page 72: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

2

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

7. 開始ボタン(F5キー)クリック

Page 73: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

3

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

8. セキュリティの警告は「はい」押下

Page 74: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

4

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

9. 動いた~

Page 75: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

5

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

9. 動いた~

Page 76: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

6

[B]無料で頑張る[A]VisualStudio 2013(有償版)を使う

9. 動いた~

Page 77: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

7

[A]VisualStudio 2013(有償版)を使う

[B]無料で頑張る

Page 78: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

8

[A]VisualStudio 2013(有償版)を使う

マニフェストXML

html

1. 今日の提供ソース2つ両方

[B]無料で頑張る

Page 79: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)7

9

[A]VisualStudio 2013(有償版)を使う

マニフェストXML

html

1. 今日の提供ソース2つ両方

[B]無料で頑張る

日経ソフトウエア: Office用アプリ開発入門第2回 はじめてのOffice用アプリ(きぬあささん著)http://itpro.nikkeibp.co.jp/article/COLUMN/20140313/543266/

2. 下のURLを参考に、設定をがんばる。

Page 80: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

0

[A]VisualStudio 2013(有償版)を使う

マニフェストXML

html

1. 今日の提供ソース2つ両方と、共有フォルダ、Webサーバを用意。

Webサーバ (例:http://localhost/)

[B]無料で頑張る

共有フォルダ (例:¥¥devpc¥apps)

Page 81: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

1

[A]VisualStudio 2013(有償版)を使う

マニフェストXML

html

2. 二つのファイルを下記のように配置。

共有フォルダ

Webサーバ

[B]無料で頑張る

Page 82: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

2

[A]VisualStudio 2013(有償版)を使う

3. Excelの設定でマニフェストXMLを関連付ける

[B]無料で頑張る

Page 83: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

3

[A]VisualStudio 2013(有償版)を使う

4. アプリインストール

[B]無料で頑張る

Page 84: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

4

[A]VisualStudio 2013(有償版)を使う

4. アプリインストール

[B]無料で頑張る

Page 85: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

5

[A]VisualStudio 2013(有償版)を使う

5. 動いた~

[B]無料で頑張る

Page 86: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

6

Page 87: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

7

Page 88: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

8

300件の顧客データに、●●●列を追加して。

上司

Page 89: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)8

9

300件の顧客データに、年齢列を追加して。

上司

Page 90: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

0

生年月日→年齢

Page 91: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

1

Page 92: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

2

29

Page 93: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

3

29

シンキングタイム20秒

Page 94: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

4

[A]Excel関数 [B]Office用アプリ

29

Page 95: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

5

[A]Excel関数 [B]Office用アプリ

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

Page 96: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

6

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

Page 97: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

7

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

DE

MO

Page 98: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

8

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

①範囲選択したn行x2列の値群を配列でゲット

Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);

Page 99: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)9

9

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

②左列から名前を抽出(Array.split(“ “)[1])

③右列に名前をセット

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”太郎”],[“鈴木 花子” , ”花子”],[“斉藤 三郎” , ”三郎”]

]

for文で②③処理繰り返し。

Page 100: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

00

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[“1985/9/26” , ””],[“1944/6/24” , ””],[“2007/7/12” , ””]

]

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

②左列から年齢を計算

③右列に年齢をセット

for文で②③処理繰り返し。①範囲選択を配列でゲット

Page 101: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

01

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[“1985/9/26” , ””],[“1944/6/24” , ””],[“2007/7/12” , ””]

]

②左列から年齢を計算

③右列に年齢をセット

for文で②③処理繰り返し。①範囲選択を配列でゲット

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

Page 102: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

02

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

②左列から年齢を計算

③右列に年齢をセット

for文で②③処理繰り返し。①範囲選択を配列でゲット

[[31316 , ””],[16247 , ””],[39275 , ””]

]

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

Page 103: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

03

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[31316 , ””],[16247 , ””],[39275 , ””]

]

②左列から年齢を計算

③右列に年齢をセット

for文で②③処理繰り返し。1900/1/1からの経過日数

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

Page 104: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

04

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

28

[[31316 , ””],[16247 , ””],[39275 , ””]

]

[[“1985/9/26” , ”28”],[“1980/1/5” , ”70”],[“1970/11/15” , ”7”]

]

②左列から年齢を計算

③右列に年齢をセット

for文で②③処理繰り返し。

書式設定

日付→数値

1900/1/1からの経過日数

Page 105: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

05

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[31316 , ””],[16247 , ””],[39275 , ””]

]

1900/1/1からの経過日数

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

Page 106: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

06

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

誕生日から今日までの期間を取得

誕生日から今日までの期間を取得

29

[[31316 , ””],[16247 , ””],[39275 , ””]

]

②左列(経過日数)を日付に変換

④右列に年齢をセット

for文で②③④処理繰り返し。1900/1/1からの

経過日数

[[“1985/9/26” , ”29”],[“1944/6/24” , ”70”],[“2007/7/12” , ”7”]

]

③日付から年齢を計算

[[“1985/9/26” , ””],[“1944/6/24” , ””],[“2007/7/12” , ””]

]

Page 107: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

07

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY() ,"Y")

第1引数から第2引数までの

期間を返却

28var theDate = covertSerialValueToDate (31316);

// (左列)をDate型に変換function covertSerialValueToDate(inDateTime) {

var excelDateTimeSerialValue = inDateTime;var oneDayInMilliseconds = 86400000;var excelOriginDateInMilliseconds = new Date(1899, 11, 31).getTime();var val1 = Math.floor(excelDateTimeSerialValue); // Excelシリアル値の整数

部分var val2 = excelDateTimeSerialValue - val1; // Excelシリアル値の小数部分var day = oneDayInMilliseconds * (val1 - 1);var time = oneDayInMilliseconds * val2;var dateTime = day + time + excelOriginDateInMilliseconds;var result = new Date();result.setTime(dateTime);return result;

}※参考:http://origin809.wordpress.com/2013/12/10/first-step-of-apps-for-office/

②左列(経過日数)を日付に変換 31316→ “1985/9/26”

Page 108: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

08

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY() ,"Y")

第1引数から第2引数までの

期間を返却

28// 今日からの経過日数をDate型に変換

var diffDate = new Date(new Date() – [生年月日のDate型]);

// 年齢を算出var age = diffDate.getUTCFullYear() - 1970;

※参考:Javascriptで誕生日から現在の年齢を算出http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8

③日付から年齢を計算

Page 109: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

09

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY() ,"Y")

第1引数から第2引数までの

期間を返却

28// 今日からの経過日数をDate型に変換

var diffDate = new Date(new Date() – [生年月日のDate型]);

// 年齢を算出var age = diffDate.getUTCFullYear() - 1970;

※参考:Javascriptで誕生日から現在の年齢を算出http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8

③日付から年齢を計算 DE

MO

Page 110: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

10

[A]Excel関数 [B]Office用アプリ

[セルF2]=DATEDIF (E2, TODAY(), "Y")

①範囲選択したn行x2列の値群を配列でゲット

⑤ 範囲選択したn行x2列に配列をセット

②左列を日付に変換

for文で②③④処理繰り返し

④右列に年齢をセット

③日付から年齢を計算

誕生日から今日までの期間を取得

29

Page 111: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

11

[A] Excel関数 [B]Office用アプリ

○(1行で終わり) 1から作る △(コード量多い+Webサーバ必要)

◎(変更に追従) 誰かが作ったものを使う

○(変更に追従しない

・右記以外は[A]Excel関数使ったほうがよい。

ツカイドコロ ・あるOffice用アプリの一部の機能・Wordで使う

29

Page 112: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

12

Page 113: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

13

Page 114: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

14

300件の顧客データに、●●●列を追加して。

上司

Page 115: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

15

300件の顧客データに、氏名のふりがな列を追加して。

上司

Page 116: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

16

300件の顧客データに、氏名のふりがな列を追加して。

上司

ひらがなで。

Page 117: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

17

300件の顧客データに、氏名のふりがな列を追加して。

上司

<前提>姓と名が

全角スペースで区切られている

Page 118: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

18

氏名(フルネーム)→ふりがな

Page 119: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

19

Page 120: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

20

たざき がく

Page 121: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

21

たざき がく

シンキングタイム20秒

Page 122: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

22

たざき がく

[A]Excel関数 [B]Office用アプリ

Page 123: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

23

たざき がく

[A]Excel関数 [B]Office用アプリ

できるの?ネットに問合せすれば

できるかも?

Page 124: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

24

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

ネットに問合せすればできるかも?

Page 125: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

25

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

ネットに問合せすればできるかも?

Page 126: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

26

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

ネットに問合せすればできるかも?

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

1. 氏名のセルを選択

Page 127: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

27

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

ネットに問合せすればできるかも?

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

2. ふりがなの設定をクリック

Page 128: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

28

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

ネットに問合せすればできるかも?

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

3. 種類で[ひらがな]を選択。

Page 129: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

29

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

ネットに問合せすればできるかも?

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

4. ひらがなになる

Page 130: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

30

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

Page 131: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

31

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

★弱点あり。

Page 132: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

32

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

★弱点あり。

・フリガナ情報を持たないExcelファイルには使えません。

(例:CSV)

Page 133: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

33

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

★弱点あり。

・フリガナ情報を持たないExcelファイルには使えません。

(例:CSV)

DE

MO

Page 134: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

34

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

Page 135: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

35

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

ネットに問合せすればできるかも?

Page 136: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

36

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

①範囲選択したn行x2列の値群を配列でゲット

Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Page 137: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

37

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Page 138: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

38

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

http://developer.yahoo.co.jp/webapi/jlp/furigana/v1/furigana.html

Page 139: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

39

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

① Yahoo! IDを取得② アプリケーションIDを取得③ URLをよぶ

Page 140: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

40

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

② アプリケーションIDを取得

クライアントサイド

Page 141: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

41

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

② アプリケーションIDを取得

Page 142: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

42

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

③ URLをよぶhttp://jlp.yahooapis.jp/FuriganaService/V1/furigana?appid=[②のアプリケーションID]&sentence=[山田 太郎をURLエンコードした文字列]

Page 143: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

43

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Yahooルビ振りAPI

③ URLをよぶhttp://jlp.yahooapis.jp/FuriganaService/V1/furigana?appid=[②のアプリケーションID]&sentence=[山田 太郎をURLエンコードした文字列]

Page 144: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

44

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Page 145: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

45

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Page 146: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

46

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

データ取得できないエラー

Page 147: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

47

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

データ取得できないエラー

XML

Page 148: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

48

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

データ取得できないエラー

XML

クロスドメインエラー

Page 149: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

49

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

データ取得できないエラー

XML

クロスドメインエラー

JSONPだったらよかったのに

(クロスドメインエラーにならない)

Page 150: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

50

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

Page 151: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

51

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

Page 152: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

52

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

Page 153: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

53

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XML, HTML, RSS, CSVなどをJSONPに変換してくれる

YQL (Yahoo! Query Language) : 米国のYahoo提供

https://developer.yahoo.com/yql/

Page 154: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

54

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XML, HTML, RSS, CSVなどをJSONPに変換してくれる

YQL (Yahoo! Query Language) : 米国のYahoo提供

XML, HTML, RSS, CSVなどをJSONPに

変換できる

◇参考URLhttp://hail2u.net/blog/webdesign/scribble-something.htmlhttp://blog.yo41sawada.jp/weblog/tips/yql_cross-domain/

https://developer.yahoo.com/yql/

Page 155: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

55

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XML, HTML, RSS, CSVなどをJSONPに変換してくれる

YQL (Yahoo! Query Language) : 米国のYahoo提供

https://developer.yahoo.com/yql/

$.getJSON("http://query.yahooapis.com/v1/public/yql?callback=?", {

q: "SELECT * FROM yahoojp.jlp.furigana.furiganaWHERE appid='" + appid + "'

and sentence='" + beforeValue + "'",format: "json",env: "store://datatables.org/alltableswithkeys"

}, function (json) {// 後処理

});

Page 156: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

56

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

Page 157: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

57

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

★弱点あり。

Page 158: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

58

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

★弱点あり。変換率100%ではない

Page 159: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

59

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田 太郎” , ”やまだ たろう”],[“鈴木 花子” , ”すずき はなこ”],[“斉藤 三郎” , ”さいとう さぶろう”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

★弱点あり。変換率100%ではない

DE

MO

Page 160: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

60

たざき がく

[A]Excel関数 [B]Office用アプリ

ふりがな取得関数を使う

Yahooルビ振りAPIとYQLとJSONPを使う

[セルD2]=PHONETIC (C2)

・“ふりがなの設定”で種類を[ひらがな]にする。

Page 161: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

61

[A] Excel関数 [B]Office用アプリ

・Excelファイルがふりがな情報を持っている場合

ツカイドコロ ・Excelファイルがふりがな情報を持っていない場合

たざき がく

Page 162: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

62

おまけ自選:難読氏名5選

Page 163: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

63

四月一日 君尋(XXXHOLiC)

わたぬき きみひろ

鹿目 まどか(魔法少女まどか☆マギカ)

かなめ まどか

初春 飾利(とある科学の超電磁砲)

ういはる かざり

西谷 夕(ハイキュー!!)

にしのや ゆう

忍野 忍(<物語>シリーズ)

おしの しのぶ

Page 164: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

64

四月一日 君尋(XXXHOLiC)

わたぬき きみひろ

鹿目 まどか(魔法少女まどか☆マギカ)

かなめ まどか

初春 飾利(とある科学の超電磁砲)

ういはる かざり

西谷 夕(ハイキュー!!)

にしのや ゆう

忍野 忍(<物語>シリーズ)

おしの しのぶ

ふりがなをYahooに

問い合せてみた

Page 165: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

65

四月一日 君尋(XXXHOLiC)

わたぬき きみひろ

鹿目 まどか(魔法少女まどか☆マギカ)

かなめ まどか

初春 飾利(とある科学の超電磁砲)

ういはる かざり

西谷 夕(ハイキュー!!)

にしのや ゆう

忍野 忍(<物語>シリーズ)

おしの しのぶ

Page 166: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

66

四月一日 君尋(XXXHOLiC)

わたぬき きみひろおたぬき きみひろ

鹿目 まどか(魔法少女まどか☆マギカ)

かなめ まどかかめ まどか

初春 飾利(とある科学の超電磁砲)

ういはる かざりしょしゅんかざりとし

西谷 夕(ハイキュー!!)

にしのや ゆうにしや ゆう

忍野 忍(<物語>シリーズ)

おしの しのぶおしの にん

Page 167: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

67

Page 168: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

68

Page 169: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

69

300件の顧客データに、●●●列を追加して。

上司

Page 170: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

70

300件の顧客データに、名前列を追加して。

上司

Page 171: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

71

300件の顧客データに、名前列を追加して。

上司

<前提>姓と名は

くっついている

Page 172: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

72

氏名(フルネーム)→名前抽出 [その2]

Page 173: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

73

Page 174: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

74

Page 175: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

75

シンキングタイム20秒

Page 176: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

76

[A]Excel関数 [B]Office用アプリ

Page 177: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

77

[A]Excel関数 [B]Office用アプリ

田崎 岳 田崎 岳

全角スペースより右の文字列を取得

全角スペースで分割し文字列の2番めを取る

① ②

Page 178: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

78

[A]Excel関数 [B]Office用アプリ

田崎 岳 田崎 岳

全角スペースより右の文字列を取得

全角スペースで分割し文字列の2番めを取る

① ②

Page 179: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

79

[A]Excel関数 [B]Office用アプリ

Page 180: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

80

[A]Excel関数 [B]Office用アプリ

林?伊藤?

佐々木?

Page 181: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

81

[A]Excel関数 [B]Office用アプリ

\(T_T)/お手上げ

Page 182: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

82

[A]Excel関数 [B]Office用アプリ

\(T_T)/お手上げ Yahooルビ振りAPIと

YQLとJSONPを使う

Page 183: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

83

たざき がく

[[“山田 太郎” , ””],[“鈴木 花子” , ””],[“斉藤 三郎” , ””]

]

[[“山田太郎” , ””],[“鈴木花子” , ””],[“斉藤三郎” , ””]

]

[[“山田太郎” , “太郎”],[“鈴木花子” , ”花子”],[“斉藤三郎” , ”三郎”]

]

Yahooルビ振り

API

YQL JSONP

XMLをJSONPに変換してくれる

Page 184: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

84

[A]Excel関数 [B]Office用アプリ

\(T_T)/お手上げ Yahooルビ振りAPIと

YQLとJSONPを使う

DE

MO

Page 185: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

85

[A] Excel関数 [B]Office用アプリ

\(T_T)/

お手上げ

\(^o^)/

バンザイ

Page 186: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

86

Page 187: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

87

Page 188: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

88

300件の顧客データに、●●●列を追加して。

上司

Page 189: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

89

300件の顧客データに、郵便番号列を追加して。

上司

Page 190: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

90

住所→郵便番号

Page 191: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

91

Page 192: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

92

954-0166

Page 193: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

93

954-0166

シンキングタイム20秒

Page 194: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

94

954-0166

[A]??? [B]Office用アプリ

Page 195: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

95

954-0166

[A]??? [B]Office用アプリ

なにかのWebAPIに問い合わせる

Page 196: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

96

954-0166

[A]??? [B]Office用アプリ

GoogleのAPIに聞く

Page 197: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

97

954-0166

[A]??? [B]Office用アプリ

GoogleのAPIに聞く

Page 198: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

98

954-0166

[A]??? [B]Office用アプリ

GoogleのAPIに聞く

※googleの変換API (ajaxzip3)[○] 郵便番号→住所[X] 住所→郵便番号

Page 199: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)1

99

954-0166

[A]??? [B]Office用アプリ

住所→郵便番号変換WebAPIに問い合わせ

Page 200: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

00

954-0166

[A]??? [B]Office用アプリ

むずかしそう。。

住所→郵便番号変換WebAPIに問い合わせ

Page 201: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

01

954-0166

※住所→郵便番号をサポートしているWebAPI

Page 202: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

02

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

Page 203: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

03

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

新潟県長岡市

郵便番号検索API

たくさん(50件以上)

Page 204: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

04

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

郵便番号検索API

9540166(1件)

新潟県長岡市海老島勇次新田

Page 205: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

05

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

郵便番号検索API

0件

新潟県長岡市海老島勇次新田115-10

Page 206: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

06

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

郵便番号検索API

0件

新潟県長岡市海老島勇次新田115-10

問い合わせ文字列を投げ過ぎたらNG

Page 207: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

07

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

新潟県長岡市海老島勇次新田115-10

〒9540166

Page 208: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

08

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

新潟県長岡市海老島勇次新田115-10

〒9540166

全角数字で判定する?

Page 209: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

09

954-0166

※住所→郵便番号をサポートしているWebAPI・ぽすたん (http://www.postan.jp)・IW3 PROJECT (http://project.iw3.org/zip_search_x0401)・グルーブテクノロジーWebサービス

(http://groovetechnology.co.jp/webservice/)

新潟県長岡市海老島勇次新田115-10

北海道旭川市10条通19丁目34-23

〒9540166

〒0788220

Page 210: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

10

954-0166

[A]??? [B]Office用アプリ

むずかしそう。。

住所→郵便番号変換WebAPIに問い合わせ

Page 211: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

11

954-0166

[A]Excelアドイン [B]Office用アプリ

むずかしそう。。

郵便番号変換ウィザードを使う

住所→郵便番号変換WebAPIに問い合わせ

Page 212: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

12

954-0166

[A]Excelアドイン [B]Office用アプリ

むずかしそう。。

郵便番号変換ウィザードを使う

住所→郵便番号変換WebAPIに問い合わせ

<必要なこと>1) アドインダウンロード2) Excelに組み込む3) 使う

Page 213: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

13

954-0166

Excel アドイン:郵便番号変換ウィザード@CodePlex

http://excelzipcode7japan.codeplex.com/

Page 214: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

14

954-0166

1. [download]をクリックして、アドインをダウンロードする

http://excelzipcode7japan.codeplex.com/

導入編

Page 215: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

15

954-0166

2. ファイルのプロパティを開き、[ブロックの解除]をクリック

Page 216: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

16

954-0166

3. Excelのオプション>アドイン>設定をクリック

Page 217: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

17

954-0166

4. 参照をクリック

Page 218: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

18

954-0166

5. アドインファイルを選択してOKクリック

Page 219: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

19

954-0166

6. OKをクリック

Page 220: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

20

954-0166

1. アドイン>ウィザード>郵便番号変換 を選択

使用編

Page 221: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

21

954-0166

2. 住所から郵便番号を生成する を選択して[次へ]

Page 222: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

22

954-0166

3. 住所データの範囲と、郵便番号を出力したい範囲を設定

Page 223: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

23

954-0166

4. 書式は[文字列]を選択して次へ

Page 224: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

24

954-0166

5. [完了]をクリック

Page 225: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

25

954-0166

6. 動いた~

Page 226: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

26

954-0166

6. 動いた~D

EM

O

Page 227: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

27

954-0166

[A]Excelアドイン [B]Office用アプリ

むずかしそう。。

郵便番号変換ウィザードを使う

住所→郵便番号変換WebAPIに問い合わせ

<必要なこと>1) アドインダウンロード2) Excelに組み込む3) 使う

Page 228: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

28

954-0166

[A] Excelアドイン [B]Office用アプリ

△(導入ちょっと大変 1から作る

○(ウィザード形式でできる)

誰かが作ったものを使う

・この方法1択ではないか?

ツカイドコロ

Page 229: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

29

Page 230: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

30

まとめ

Page 231: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

31

まとめ

なんでもかんでもExcel関数

なんでもかんでもOffice用アプリ

なんでもかんでもVBA

なんでもかんでもVSTO

Page 232: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

32

まとめ

なんでもかんでもExcel関数

なんでもかんでもOffice用アプリ

なんでもかんでもVBA

なんでもかんでもVSTO

Page 233: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

33

まとめ

なんでもかんでもExcel関数

なんでもかんでもOffice用アプリ

なんでもかんでもVBA

なんでもかんでもVSTO

問題に応じて最適な手法を使いましょう

Page 234: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

34

まとめOffice用アプリ

Page 235: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

35

まとめOffice用アプリ

WebサービスA

WebサービスB

WebサービスC

WebサービスD

WebサービスE

Page 236: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

36

まとめOffice用アプリ

WebサービスA

WebサービスB

WebサービスC

WebサービスD

WebサービスE

MashUp

Page 237: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

37

まとめOffice用アプリ

WebサービスA

WebサービスB

WebサービスC

WebサービスD

WebサービスE

MashUp

引き出しがあればあるほどできることが

増える

Page 238: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

38

まとめOffice用アプリ

WebサービスA

WebサービスB

WebサービスC

WebサービスD

WebサービスE

MashUp

引き出しがあればあるほどできることが

増える

情報の引き出しを

増やしましょう

Page 239: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

39

まとめOffice用アプリ

WebサービスA

WebサービスB

WebサービスC

WebサービスD

WebサービスE

MashUp

引き出しがあればあるほどできることが

増える

情報の引き出しを

増やしましょう

例)日本の全エンジニアに捧ぐ!現在公開されているAPI一覧【2013年版】http://www.find-job.net/startup/api-2013

Page 240: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

40

Page 241: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

41

サンプルデータ

Office用アプリRandom Data Generator (きぬあささん作)

Page 242: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

42

今日のスライド

今夜以降「slideshare ta2c」でネットで検索

Page 243: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

43

データ

http://1drv.ms/Zho851

サンプルアプリ

<お約束>サンプルに関して、万一ユーザーまたは第三者が何らかの損害を被った場合においても、一切の責任を負うことは出来ませんのでご了承ください。

Page 244: 20141004 詰Excel

#A

pp

sForO

ffice詰

Exce

l/くら

もと

たつ

し(@

ta2

c)2

44#AppsForOffice

詰ExcelOffice用アプリの

ツカイドコロ