SlideShare a Scribd company logo
1 of 244
Download to read offline
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
1 
2014/10/4 
くらもとたつし 
#AppsForOffice 
詰Excel 
Office用アプリの 
ツカイドコロ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
2 
くらもと 
たつし 
発表者について 
@セカンド 
ファクトリー
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
3 
UI & CLOUD Professional 
コンサル 
トレーニング 
設計、開発 
自社プロダクト開発 
セカンド 
ファクトリー
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
4 
くらもと 
たつし 
開発に従事 
Tatsushi 
Kuramoto 
@ta2c 
ta2c
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
5 
国内旅行
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
6 
47 
観光した 県の数 
国内旅行
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
7 
41 
47 
国内旅行 
観光した 県の数
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
8 
前回 
「slideshareta2c」でネットで検索
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
9 
今回 
今夜以降「slideshareta2c」でネットで検索
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
10 
データ 
サンプルアプリ 
<お約束> 
サンプルに関して、万一ユーザーまたは第三者が何らかの損害を被った場合に おいても、一切の責任を負うことは出来ませんのでご了承ください。 
http://1drv.ms/Zho851
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
11 
補足: 
内容は 
個人の見解であり 
所属する組織の 
公式見解では 
ありません
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
12
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
13 
今日はこんな話 をします
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
14 
詰将棋 
将棋の 実践的な問題集 
(相手の王様を 
倒したら勝ち)
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
15 
654321 
一 
二 
三 
五 
六 
四 
銀 
金 
玉 
香 
桂 
角 
桂 
歩 
金 
桂
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
16 
654321 
一 
二 
三 
五 
六 
四 
銀 
金 
玉 
香 
桂 
角 
桂 
歩 
金 
桂
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
17 
654321 
一 
二 
三 
五 
六 
四 
銀 
金 
玉 
香 
桂 
桂 
歩 
金 
桂 
2四銀 
角
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
18 
654321 
一 
二 
三 
五 
六 
四 
銀 
金 
玉 
香 
桂 
桂 
歩 
金 
桂 
角 
2四銀 
2五桂
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
19 
将棋の 実践的な問題集 
詰将棋
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
20 
Excelの 実践的な問題集 
将棋の 実践的な問題集 
詰将棋 
詰Excel
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
21 
300件の顧客データに、 
●●●列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
22 
300件の顧客データに、 
名前列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
23 
300件の顧客データに、 
名前列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
24 
300件の顧客データに、 
名前列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
25 
300件の顧客データに、 
名前列を追加して。 
上司 
銀 
D4銀
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
26 
300件の顧客データに、 
名前列を追加して。 
上司 
銀 
D5圭 
圭 
D4銀
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
27 
Excelの 実践的な問題集 
将棋の 実践的な問題集 
詰将棋 
詰Excel
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
28 
Excelの 実践的な問題集 
詰Excel 
Office用アプリの 使いどころ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
30 
氏名(フルネーム) →名前抽出
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
31 
300件の顧客データに、 
名前列を追加して。 
上司 
<前提> 
姓と名が 全角スペースで 区切られている
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
32 
岳 
シンキングタイム 
20秒
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
33 
[A]Excel関数 
[B]Office用アプリ 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
34 
[A]Excel関数 
岳 
田崎岳 
全角スペースより右の 
文字列を取得 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
35 
全角スペースより右の 
文字列を取得 
[A]Excel関数 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
岳 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
36 
[A]Excel関数 
[B]Office用アプリ 
岳 
ドラッグ 
全角スペースより右の 
文字列を取得 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1))
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
37 
[A]Excel関数 
[B]Office用アプリ 
岳 
ドラッグ 
全角スペースより右の 
文字列を取得 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
38 
[A]Excel関数 
[B]Office用アプリ 
岳 
ダブル クリック 
※おすすめ 
全角スペースより右の 
文字列を取得 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1))
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
39 
[A]Excel関数 
[B]Office用アプリ 
岳 
全角スペースより右の 
文字列を取得 
左の行数分 
コピー 
される 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1))
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
40 
[A]Excel関数 
岳 
全角スペースより右の 
文字列を取得 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
41 
[A]Excel関数 
岳 
全角スペースより右の 
文字列を取得 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
[B]Office用アプリ 
田崎岳 
全角スペースで分割し 文字列の2番めを取る 
① 
②
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
42 
[A]Excel関数 
岳 
全角スペースより右の 
文字列を取得 
<C2の値>.split("")[1] 
[セルD2に入力] 
=RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
43 
<!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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
44 
<!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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
45 
[A]Excel関数 
[B]Office用アプリ 
2列を選択して、実行ボタンを押す
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
46 
[A]Excel関数 
[B]Office用アプリ 
2列を選択して、実行ボタンを押す 
太郎 
花子 
三郎 
求めたい値が右列に入る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
47 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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文で②③処理繰り返し。 
③右列に名前をセット
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
48 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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列 の値群を配列でゲット
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
49 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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, コールバック関数);
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
50 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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, コールバック関数); 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
51 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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文で②③処理繰り返し。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
52 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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” }, コールバック関数); 
[ 
[“山田太郎”,”太郎”], 
[“鈴木花子”,”花子”], 
[“斉藤三郎”,”三郎”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
53 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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” }, コールバック関数); 
[ 
[“山田太郎”,”太郎”], 
[“鈴木花子”,”花子”], 
[“斉藤三郎”,”三郎”] 
] 
太郎 
花子 
三郎
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
54 
[セル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次元配列 
varbeforeMatrix= []; 
// 変換後の2次元配列 
varafterMatrix= []; 
// 実行中の行番号 
varconvertCounter= 0; 
Office.initialize= function(reason) {} 
window.onload= function() { 
varbtn= 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() { 
// 変換前のアイテム 
vartargetRow= beforeMatrix[convertCounter]; 
// 左のセル 
varoriginalValue= targetRow[0]; 
convertValue(originalValue, executeConvertItemCallback); 
} 
// 1件分変換を実行したあとのコールバック関数 
function executeConvertItemCallback(originalValue, targetValue) { 
// 変換後のアイテム 
varconvertRow= [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; 
} 
// ============================================ 
// 個別プロパティ、メソッド 
// ■■■■■■■■■■■■■■■■■■■■■■ 
vartitle = "case.1"; 
function convertValue(beforeValue, inCallBack) { 
// 全角スペースで文字列を分割 
varsplitArray= beforeValue.split(""); 
varafterValue= 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” }, コールバック関数); 
[ 
[“山田太郎”,”太郎”], 
[“鈴木花子”,”花子”], 
[“斉藤三郎”,”三郎”] 
] 
太郎 
花子 
三郎 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
55 
[A]Excel関数 
①範囲選択したn行x2列 の値群を配列でゲット 
④範囲選択したn行x2列に 
配列をセット 
②左列から名前を抽出 
for文で②③処理繰り返し 
③右列に名前をセット 
岳 
[セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) 
全角スペースより右の 
文字列を取得 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
56 
[A]Excel関数 
[B]Office用アプリ 
○(1行で終わり) 
1から作る 
△(コード量多い +Webサーバ必要) 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
57 
[A]Excel関数 
[B]Office用アプリ 
○(1行で終わり) 
1から作る 
△(コード量多い +Webサーバ必要) 
◎(変更に追従) 
誰かが作った ものを使う 
○(変更に追従しない 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
58 
[A]Excel関数 
[B]Office用アプリ 
○(1行で終わり) 
1から作る 
△(コード量多い +Webサーバ必要) 
◎(変更に追従) 
誰かが作った ものを使う 
○(変更に追従しない 
岳 
田崎今日子 
今日子
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
59 
[A]Excel関数 
[B]Office用アプリ 
○(1行で終わり) 
1から作る 
△(コード量多い +Webサーバ必要) 
◎(変更に追従) 
誰かが作った ものを使う 
○(変更に追従しない 
・右記以外は [A]Excel関数 使ったほうがよい。 
ツカイドコロ 
・あるOffice用アプリ の一部の機能 
・Wordで使う 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
60
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
61 
※今日の 
Office用アプリ 動かしてみたい
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
62 
[A]VisualStudio2013(有償版)を使う (Professional以上) 
[B]無料で頑張る 
※今日の 
Office用アプリ 動かしてみたい
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
63 
[A]VisualStudio2013(有償版)を使う 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
64 
[A]VisualStudio2013(有償版)を使う 
[B]無料で頑張る 
マニフェスト 
XML 
html
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
65 
[A]VisualStudio2013(有償版)を使う 
[B]無料で頑張る 
1. 今日の提供ソースのうち、 htmlのみ用意 
マニフェスト 
XML 
html
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
66 
[A]VisualStudio2013(有償版)を使う 
[B]無料で頑張る 
2. VisualStudio2013 と Update3をインストール 
•※参考 Visual Studio 2013 90 日間の無償評価版 
http://www.visualstudio.com/ja-jp/downloads/download-visual-studio- vs#DownloadFamilies_1 
•Visual Studio 2013 Update3 
http://www.microsoft.com/ja-jp/download/details.aspx?id=43721
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
67 
[B]無料で頑張る 
3. VisualStudio2013を起動。 
4. 新しいプロジェクト>Office用アプリを選択 
[A]VisualStudio2013(有償版)を使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
68 
[B]無料で頑張る 
5. 「次へ」「次へ」 
[A]VisualStudio2013(有償版)を使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
69 
[B]無料で頑張る 
5. 「次へ」「次へ」 
[A]VisualStudio2013(有償版)を使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
70 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
6. App¥Home¥Home.htmlを開き、 
今日のhtmlソースで全行差し替え。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
71 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
6. App¥Home¥Home.htmlを開き、 
今日のhtmlソースで全行差し替え。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
72 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
7. 開始ボタン(F5キー)クリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
73 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
8. セキュリティの警告は「はい」押下
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
74 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
9. 動いた~
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
75 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
9. 動いた~
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
76 
[B]無料で頑張る 
[A]VisualStudio2013(有償版)を使う 
9. 動いた~
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
77 
[A]VisualStudio2013(有償版)を使う 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
78 
[A]VisualStudio2013(有償版)を使う 
マニフェスト 
XML 
html 
1. 今日の提供ソース2つ両方 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
79 
[A]VisualStudio2013(有償版)を使う 
マニフェスト 
XML 
html 
1. 今日の提供ソース2つ両方 
[B]無料で頑張る 
日経ソフトウエア:Office用アプリ開発入門 第2回はじめてのOffice用アプリ(きぬあささん著) http://itpro.nikkeibp.co.jp/article/COLUMN/20140313/543266/ 
2. 下のURLを参考に、設定をがんばる。
#AppsForOffice 詰Excel/くらもとたつし(@ta2c) 80 
[A]VisualStudio 2013 
(有償版)を使う 
マニフェスト 
XML 
html 
1. 今日の提供ソース2つ両方と、 
共有フォルダ、Webサーバを用意。 
Webサーバ(例:http://localhost/) 
[B]無料で頑張る 
共有フォルダ(例:¥¥devpc¥apps)
#AppsForOffice 詰Excel/くらもとたつし(@ta2c) 81 
[A]VisualStudio 2013 
(有償版)を使う 
マニフェスト 
XML 
html 
2. 二つのファイルを下記のように配置。 
共有フォルダ 
Webサーバ 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
82 
[A]VisualStudio2013(有償版)を使う 
3. Excelの設定でマニフェストXMLを関連付ける 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
83 
[A]VisualStudio2013(有償版)を使う 
4. アプリインストール 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
84 
[A]VisualStudio2013(有償版)を使う 
4. アプリインストール 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
85 
[A]VisualStudio2013(有償版)を使う 
5. 動いた~ 
[B]無料で頑張る
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
86
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
87
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
88 
300件の顧客データに、 
●●●列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
89 
300件の顧客データに、 
年齢列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
90 
生年月日→年齢
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
91
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
92 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
93 
29 
シンキングタイム 
20秒
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
94 
[A]Excel関数 
[B]Office用アプリ 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
95 
[A]Excel関数 
[B]Office用アプリ 
誕生日から今日までの 
期間を取得 
誕生日から今日までの 
期間を取得 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
96 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF(E2, TODAY(), "Y") 
誕生日から今日までの 
期間を取得 
誕生日から今日までの 
期間を取得 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
97 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF(E2, TODAY(), "Y") 
誕生日から今日までの 
期間を取得 
誕生日から今日までの 
期間を取得 
29 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
98 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF(E2, TODAY(), "Y") 
誕生日から今日までの 
期間を取得 
誕生日から今日までの 
期間を取得 
29 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
①範囲選択したn行x2列 の値群を配列でゲット 
Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
99 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF(E2, TODAY(), "Y") 
誕生日から今日までの 
期間を取得 
誕生日から今日までの 
期間を取得 
29 
②左列から名前を抽出(Array.split(““)[1]) 
③右列に名前をセット 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”太郎”], 
[“鈴木花子”,”花子”], 
[“斉藤三郎”,”三郎”] 
] 
for文で②③処理繰り返し。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
100 
[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文で②③処理繰り返し。 
①範囲選択を 配列でゲット
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
101 
[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”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
102 
[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”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
103 
[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”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
104 
[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からの 経過日数
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
105 
[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”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
106 
[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”,””] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
107 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF (E2, TODAY(),"Y") 
第1引数から 
第2引数までの 
期間を返却 
28 
vartheDate= covertSerialValueToDate(31316); 
// (左列)をDate型に変換 
function covertSerialValueToDate(inDateTime) { 
varexcelDateTimeSerialValue= inDateTime; 
varoneDayInMilliseconds= 86400000; 
varexcelOriginDateInMilliseconds= new Date(1899, 11, 31).getTime(); 
varval1 = Math.floor(excelDateTimeSerialValue); // Excelシリアル値の整数 部分 
varval2 = excelDateTimeSerialValue-val1; // Excelシリアル値の小数部分 
varday = oneDayInMilliseconds* (val1 -1); 
vartime = oneDayInMilliseconds* val2; 
vardateTime= day + time + excelOriginDateInMilliseconds; 
varresult = new Date(); 
result.setTime(dateTime); 
return result; 
} 
※参考: http://origin809.wordpress.com/2013/12/10/first-step-of-apps-for-office/ 
②左列(経過日数)を日付に変換 
31316→ “1985/9/26”
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
108 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF (E2, TODAY(),"Y") 
第1引数から 
第2引数までの 
期間を返却 
28 
// 今日からの経過日数をDate型に変換 
vardiffDate= new Date(new Date() –[生年月日のDate型]); 
// 年齢を算出 
varage= diffDate.getUTCFullYear() -1970; 
※参考:Javascriptで誕生日から現在の年齢を算出 
http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8 
③日付から年齢を計算
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
109 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF (E2, TODAY(),"Y") 
第1引数から 
第2引数までの 
期間を返却 
28 
// 今日からの経過日数をDate型に変換 
vardiffDate= new Date(new Date() –[生年月日のDate型]); 
// 年齢を算出 
varage= diffDate.getUTCFullYear() -1970; 
※参考:Javascriptで誕生日から現在の年齢を算出 
http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8 
③日付から年齢を計算 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
110 
[A]Excel関数 
[B]Office用アプリ 
[セルF2] 
=DATEDIF(E2, TODAY(), "Y") 
①範囲選択したn行x2列 の値群を配列でゲット 
⑤範囲選択したn行x2列に 
配列をセット 
②左列を日付に変換 
for文で②③④処理繰り返し 
④右列に年齢をセット 
③日付から年齢を計算 
誕生日から今日までの 
期間を取得 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
111 
[A]Excel関数 
[B]Office用アプリ 
○(1行で終わり) 
1から作る 
△(コード量多い +Webサーバ必要) 
◎(変更に追従) 
誰かが作った ものを使う 
○(変更に追従しない 
・右記以外は [A]Excel関数 使ったほうがよい。 
ツカイドコロ 
・あるOffice用アプリ の一部の機能 
・Wordで使う 
29
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
112
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
113
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
114 
300件の顧客データに、 
●●●列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
115 
300件の顧客データに、 
氏名のふりがな列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
116 
300件の顧客データに、 
氏名のふりがな列を追加して。 
上司 
ひらがなで。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
117 
300件の顧客データに、 
氏名のふりがな列を追加して。 
上司 
<前提> 
姓と名が 全角スペースで 区切られている
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
118 
氏名(フルネーム) →ふりがな
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
119
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
120 
たざきがく
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
121 
たざきがく 
シンキングタイム 
20秒
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
122 
たざきがく 
[A]Excel関数 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
123 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
できるの? 
ネットに問合せすれば 
できるかも?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
124 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
ネットに問合せすれば 
できるかも?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
125 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
ネットに問合せすれば 
できるかも?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
126 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
ネットに問合せすれば 
できるかも? 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
1. 氏名のセルを選択
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
127 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
ネットに問合せすれば 
できるかも? 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
2. ふりがなの設定をクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
128 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
ネットに問合せすれば 
できるかも? 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
3. 種類で[ひらがな]を選択。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
129 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
ネットに問合せすれば 
できるかも? 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
4. ひらがなになる
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
130 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
131 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
★弱点あり。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
132 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
★弱点あり。 
・フリガナ情報を 
持たない 
Excelファイルには 
使えません。 
(例:CSV)
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
133 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
★弱点あり。 
・フリガナ情報を 
持たない 
Excelファイルには 
使えません。 
(例:CSV) 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
134 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
135 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。 
ネットに問合せすれば 
できるかも?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
136 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
①範囲選択したn行x2列 の値群を配列でゲット 
Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数); 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
137 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
138 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
http://developer.yahoo.co.jp/webapi/jlp/furigana/v1/furigana.html
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
139 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
①Yahoo! IDを取得 
②アプリケーションIDを取得 
③URLをよぶ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
140 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
②アプリケーションIDを取得 
クライアント サイド
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
141 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
②アプリケーションIDを取得
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
142 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
③URLをよぶ 
http://jlp.yahooapis.jp/FuriganaService/V1/furigana 
?appid=[②のアプリケーションID] &sentence=[山田太郎をURLエンコードした文字列]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
143 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
Yahooルビ振りAPI 
③URLをよぶ 
http://jlp.yahooapis.jp/FuriganaService/V1/furigana 
?appid=[②のアプリケーションID] &sentence=[山田太郎をURLエンコードした文字列]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
144 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
145 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
146 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
データ 
取得できないエラー
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
147 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
データ 
取得できないエラー 
XML
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
148 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
データ 
取得できないエラー 
XML 
クロスドメイン 
エラー
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
149 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
データ 
取得できないエラー 
XML 
クロスドメイン 
エラー 
JSONPだったら 
よかったのに 
(クロスドメイン 
エラーにならない)
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
150 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
151 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
152 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
153 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XML, HTML, RSS, CSV 
などをJSONPに 
変換してくれる 
YQL (Yahoo! Query Language): 米国のYahoo提供 
https://developer.yahoo.com/yql/
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
154 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XML, HTML, RSS, CSV 
などをJSONPに 
変換してくれる 
YQL (Yahoo! Query Language): 米国のYahoo提供 
XML, HTML, RSS, CSVなどを 
JSONPに 
変換できる 
◇参考URL 
http://hail2u.net/blog/webdesign/scribble-something.html 
http://blog.yo41sawada.jp/weblog/tips/yql_cross-domain/ 
https://developer.yahoo.com/yql/
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
155 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
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* FROMyahoojp.jlp.furigana.furigana 
WHEREappid='" + appid+ "' 
and sentence='" + beforeValue+ "'", 
format: "json", 
env: "store://datatables.org/alltableswithkeys" 
}, function (json) { 
// 後処理 
});
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
156 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
157 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる 
★弱点あり。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
158 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる 
★弱点あり。 
変換率100%ではない
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
159 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,”やまだたろう”], 
[“鈴木花子”,”すずきはなこ”], 
[“斉藤三郎”,”さいとうさぶろう”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる 
★弱点あり。 
変換率100%ではない 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
160 
たざきがく 
[A]Excel関数 
[B]Office用アプリ 
ふりがな取得関数を 使う 
Yahooルビ振りAPIと 
YQLとJSONPを使う 
[セルD2] 
=PHONETIC(C2) 
・“ふりがなの設定”で 
種類を[ひらがな]にする。
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
161 
[A]Excel関数 
[B]Office用アプリ 
・Excelファイルが ふりがな情報を 持っている場合 
ツカイドコロ 
・Excelファイルが ふりがな情報を 持っていない場合 
たざきがく
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
162 
おまけ 
自選:難読氏名5選
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
163 
四月一日君尋 
(XXXHOLiC) 
わたぬききみひろ 
鹿目まどか 
(魔法少女まどか☆マギカ) 
かなめまどか 
初春飾利 
(とある科学の超電磁砲) 
ういはるかざり 
西谷夕 
(ハイキュー!!) 
にしのやゆう 
忍野忍 
(<物語>シリーズ) 
おしのしのぶ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
164 
四月一日君尋 
(XXXHOLiC) 
わたぬききみひろ 
鹿目まどか 
(魔法少女まどか☆マギカ) 
かなめまどか 
初春飾利 
(とある科学の超電磁砲) 
ういはるかざり 
西谷夕 
(ハイキュー!!) 
にしのやゆう 
忍野忍 
(<物語>シリーズ) 
おしのしのぶ 
ふりがなを 
Yahooに 
問い合せて 
みた
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
165 
四月一日君尋 
(XXXHOLiC) 
わたぬききみひろ 
鹿目まどか 
(魔法少女まどか☆マギカ) 
かなめまどか 
初春飾利 
(とある科学の超電磁砲) 
ういはるかざり 
西谷夕 
(ハイキュー!!) 
にしのやゆう 
忍野忍 
(<物語>シリーズ) 
おしのしのぶ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
166 
四月一日君尋 
(XXXHOLiC) 
わたぬききみひろ 
おたぬききみひろ 
鹿目まどか 
(魔法少女まどか☆マギカ) 
かなめまどか 
かめまどか 
初春飾利 
(とある科学の超電磁砲) 
ういはるかざり 
しょしゅんかざりとし 
西谷夕 
(ハイキュー!!) 
にしのやゆう 
にしやゆう 
忍野忍 
(<物語>シリーズ) 
おしのしのぶ 
おしのにん
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
167
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
168
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
169 
300件の顧客データに、 
●●●列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
170 
300件の顧客データに、 
名前列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
171 
300件の顧客データに、 
名前列を追加して。 
上司 
<前提> 
姓と名は 
くっついている
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
172 
氏名(フルネーム) →名前抽出[その2]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
173
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
174 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
175 
岳 
シンキングタイム 
20秒
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
176 
[A]Excel関数 
[B]Office用アプリ 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
177 
[A]Excel関数 
[B]Office用アプリ 
岳 
田崎岳 
田崎岳 
全角スペースより右の 
文字列を取得 
全角スペースで分割し 文字列の2番めを取る 
① 
②
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
178 
[A]Excel関数 
[B]Office用アプリ 
岳 
田崎岳 
田崎岳 
全角スペースより右の 
文字列を取得 
全角スペースで分割し 文字列の2番めを取る 
① 
②
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
179 
[A]Excel関数 
[B]Office用アプリ 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
180 
[A]Excel関数 
[B]Office用アプリ 
岳 
林? 
伊藤? 
佐々木?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
181 
[A]Excel関数 
[B]Office用アプリ 
岳 
\(T_T)/ 
お手上げ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
182 
[A]Excel関数 
[B]Office用アプリ 
岳 
\(T_T)/ 
お手上げ 
Yahooルビ振りAPIと 
YQLとJSONPを使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
183 
たざきがく 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,””], 
[“鈴木花子”,””], 
[“斉藤三郎”,””] 
] 
[ 
[“山田太郎”,“太郎”], 
[“鈴木花子”,”花子”], 
[“斉藤三郎”,”三郎”] 
] 
Yahoo 
ルビ振り 
API 
YQL 
JSONP 
XMLをJSONPに 
変換してくれる
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
184 
[A]Excel関数 
[B]Office用アプリ 
岳 
\(T_T)/ 
お手上げ 
Yahooルビ振りAPIと 
YQLとJSONPを使う 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
185 
[A]Excel関数 
[B]Office用アプリ 
\(T_T)/ 
お手上げ 
\(^o^)/ 
バンザイ 
岳
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
186
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
187
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
188 
300件の顧客データに、 
●●●列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
189 
300件の顧客データに、 
郵便番号列を追加して。 
上司
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
190 
住所→郵便番号
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
191
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
192 
954-0166
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
193 
954-0166 
シンキングタイム 
20秒
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
194 
954-0166 
[A]??? 
[B]Office用アプリ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
195 
954-0166 
[A]??? 
[B]Office用アプリ 
なにかのWebAPIに 
問い合わせる
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
196 
954-0166 
[A]??? 
[B]Office用アプリ 
GoogleのAPIに聞く
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
197 
954-0166 
[A]??? 
[B]Office用アプリ 
GoogleのAPIに聞く
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
198 
954-0166 
[A]??? 
[B]Office用アプリ 
GoogleのAPIに聞く 
※googleの変換API(ajaxzip3) 
[○] 郵便番号→住所 
[X] 住所→郵便番号
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
199 
954-0166 
[A]??? 
[B]Office用アプリ 
住所→郵便番号変換 WebAPIに問い合わせ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
200 
954-0166 
[A]??? 
[B]Office用アプリ 
むずかしそう。。 
住所→郵便番号変換 WebAPIに問い合わせ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
201 
954-0166 
※住所→郵便番号をサポートしているWebAPI
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
202 
954-0166 
※住所→郵便番号をサポートしているWebAPI 
・ぽすたん(http://www.postan.jp) 
・IW3 PROJECT(http://project.iw3.org/zip_search_x0401) 
・グルーブテクノロジーWebサービス (http://groovetechnology.co.jp/webservice/)
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
203 
954-0166 
※住所→郵便番号をサポートしているWebAPI 
・ぽすたん(http://www.postan.jp) 
・IW3 PROJECT(http://project.iw3.org/zip_search_x0401) 
・グルーブテクノロジーWebサービス (http://groovetechnology.co.jp/webservice/) 
新潟県長岡市 
郵便番号 検索API 
たくさん(50件以上)
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
204 
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件) 
新潟県長岡市 
海老島勇次新田
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
205 
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
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
206 
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
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
207 
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
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
208 
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 
全角数字で 
判定する?
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
209 
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
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
210 
954-0166 
[A]??? 
[B]Office用アプリ 
むずかしそう。。 
住所→郵便番号変換 WebAPIに問い合わせ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
211 
954-0166 
[A]Excelアドイン 
[B]Office用アプリ 
むずかしそう。。 
郵便番号変換ウィザード を使う 
住所→郵便番号変換 WebAPIに問い合わせ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
212 
954-0166 
[A]Excelアドイン 
[B]Office用アプリ 
むずかしそう。。 
郵便番号変換ウィザード を使う 
住所→郵便番号変換 WebAPIに問い合わせ 
<必要なこと> 
1) アドインダウンロード 
2) Excelに組み込む 
3) 使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
213 
954-0166 
Excel アドイン:郵便番号変換ウィザード@CodePlex 
http://excelzipcode7japan.codeplex.com/
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
214 
954-0166 
1. [download]をクリックして、アドインをダウンロードする 
http://excelzipcode7japan.codeplex.com/ 
導入編
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
215 
954-0166 
2. ファイルのプロパティを開き、[ブロックの解除]をクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
216 
954-0166 
3. Excelのオプション>アドイン>設定をクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
217 
954-0166 
4. 参照をクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
218 
954-0166 
5. アドインファイルを選択してOKクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
219 
954-0166 
6. OKをクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
220 
954-0166 
1. アドイン>ウィザード>郵便番号変換を選択 
使用編
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
221 
954-0166 
2.住所から郵便番号を生成するを選択して[次へ]
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
222 
954-0166 
3.住所データの範囲と、郵便番号を出力したい範囲を設定
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
223 
954-0166 
4.書式は[文字列]を選択して次へ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
224 
954-0166 
5.[完了]をクリック
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
225 
954-0166 
6.動いた~
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
226 
954-0166 
6.動いた~ 
DEMO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
227 
954-0166 
[A]Excelアドイン 
[B]Office用アプリ 
むずかしそう。。 
郵便番号変換ウィザード を使う 
住所→郵便番号変換 WebAPIに問い合わせ 
<必要なこと> 
1) アドインダウンロード 
2) Excelに組み込む 
3) 使う
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
228 
954-0166 
[A]Excelアドイン 
[B]Office用アプリ 
△(導入ちょっと大変 
1から作る 
○(ウィザード形式で 
できる) 
誰かが作った ものを使う 
・この方法1択 
ではないか? 
ツカイドコロ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
229
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
230 
まとめ
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
231 
まとめ 
なんでもかんでも 
Excel関数 
なんでもかんでも 
Office用アプリ 
なんでもかんでも 
VBA 
なんでもかんでも 
VSTO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
232 
まとめ 
なんでもかんでも 
Excel関数 
なんでもかんでも 
Office用アプリ 
なんでもかんでも 
VBA 
なんでもかんでも 
VSTO
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
233 
まとめ 
なんでもかんでも 
Excel関数 
なんでもかんでも 
Office用アプリ 
なんでもかんでも 
VBA 
なんでもかんでも 
VSTO 
問題に応じて 
最適な手法を 
使いましょう
#AppsForOffice 
詰Excel/くらもとたつし(@ta2c) 
234 
まとめ 
Office用アプリ
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel
20141004 詰Excel

More Related Content

Viewers also liked

いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたHayashi Yuichi
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするHayashi Yuichi
 
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015Yoshinori Kobayashi
 
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」Michiyo Fukada
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in ElasticsearchFlorian Hopf
 
Optika geometri
Optika geometriOptika geometri
Optika geometrisupri Yono
 
4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istanteGio Garavello
 
Programa anoia activitats dm activ fisica
Programa anoia activitats dm activ fisicaPrograma anoia activitats dm activ fisica
Programa anoia activitats dm activ fisicaICS Catalunya Central
 
โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์princess Thirteenpai
 
ALIA NLS7 Career Planning Workshop Contributed Slides
ALIA NLS7 Career Planning Workshop Contributed SlidesALIA NLS7 Career Planning Workshop Contributed Slides
ALIA NLS7 Career Planning Workshop Contributed SlidesSue Hutley
 
Akka Presentation Schule@synyx
Akka Presentation Schule@synyxAkka Presentation Schule@synyx
Akka Presentation Schule@synyxFlorian Hopf
 
Creation 101109231427-phpapp02
Creation 101109231427-phpapp02Creation 101109231427-phpapp02
Creation 101109231427-phpapp02beckyboks
 
Fast Track Problem Solving in Bangladesh
Fast Track Problem Solving in BangladeshFast Track Problem Solving in Bangladesh
Fast Track Problem Solving in BangladeshDr Nahin Mamun
 

Viewers also liked (15)

いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015
愛があれば発信できる!WordPressで作る焼き鳥ポータルサイト~公式テーマ・プラグインと子テーマの活用~|WordCamp Tokyo 2015
 
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」
パワポは「最後」に開く-すぐできる!プレゼン資料作成術「大掃除編」
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
 
Wh questions
Wh questionsWh questions
Wh questions
 
Optika geometri
Optika geometriOptika geometri
Optika geometri
 
4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante
 
Programa anoia activitats dm activ fisica
Programa anoia activitats dm activ fisicaPrograma anoia activitats dm activ fisica
Programa anoia activitats dm activ fisica
 
โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์โครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์
 
ALIA NLS7 Career Planning Workshop Contributed Slides
ALIA NLS7 Career Planning Workshop Contributed SlidesALIA NLS7 Career Planning Workshop Contributed Slides
ALIA NLS7 Career Planning Workshop Contributed Slides
 
Absolute Lies
Absolute LiesAbsolute Lies
Absolute Lies
 
Akka Presentation Schule@synyx
Akka Presentation Schule@synyxAkka Presentation Schule@synyx
Akka Presentation Schule@synyx
 
Creation 101109231427-phpapp02
Creation 101109231427-phpapp02Creation 101109231427-phpapp02
Creation 101109231427-phpapp02
 
Fast Track Problem Solving in Bangladesh
Fast Track Problem Solving in BangladeshFast Track Problem Solving in Bangladesh
Fast Track Problem Solving in Bangladesh
 

Similar to 20141004 詰Excel

React でフォームをスマートに実装する【weseek tech conf #11】
React でフォームをスマートに実装する【weseek tech conf #11】React でフォームをスマートに実装する【weseek tech conf #11】
React でフォームをスマートに実装する【weseek tech conf #11】WESEEKWESEEK
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数kunihikokaneko1
 
FRP in Practice
FRP in PracticeFRP in Practice
FRP in Practicerf0444
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
T sql 振り返り
T sql 振り返りT sql 振り返り
T sql 振り返りOda Shinsuke
 
Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programmingtakesako
 
T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日Go Tanaka
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
2022年ASP.NETCore2.2~6.0の旅.pptx
2022年ASP.NETCore2.2~6.0の旅.pptx2022年ASP.NETCore2.2~6.0の旅.pptx
2022年ASP.NETCore2.2~6.0の旅.pptxMasanori Masui
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
Design mvc apps with spotify web api object model
Design mvc apps with spotify web api object modelDesign mvc apps with spotify web api object model
Design mvc apps with spotify web api object modelTakao Tetsuro
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competitionyak1ex
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Yoshifumi Kawai
 
Procedure、function create hanson
Procedure、function create hansonProcedure、function create hanson
Procedure、function create hansonssuser79c1e3
 

Similar to 20141004 詰Excel (17)

React でフォームをスマートに実装する【weseek tech conf #11】
React でフォームをスマートに実装する【weseek tech conf #11】React でフォームをスマートに実装する【weseek tech conf #11】
React でフォームをスマートに実装する【weseek tech conf #11】
 
[Japan Tech summit 2017] APP 004
[Japan Tech summit 2017]  APP 004[Japan Tech summit 2017]  APP 004
[Japan Tech summit 2017] APP 004
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
 
FRP in Practice
FRP in PracticeFRP in Practice
FRP in Practice
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
T sql 振り返り
T sql 振り返りT sql 振り返り
T sql 振り返り
 
Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programming
 
T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
2022年ASP.NETCore2.2~6.0の旅.pptx
2022年ASP.NETCore2.2~6.0の旅.pptx2022年ASP.NETCore2.2~6.0の旅.pptx
2022年ASP.NETCore2.2~6.0の旅.pptx
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Design mvc apps with spotify web api object model
Design mvc apps with spotify web api object modelDesign mvc apps with spotify web api object model
Design mvc apps with spotify web api object model
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
Try Webworkers
Try WebworkersTry Webworkers
Try Webworkers
 
Procedure、function create hanson
Procedure、function create hansonProcedure、function create hanson
Procedure、function create hanson
 

20141004 詰Excel

  • 1. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 1 2014/10/4 くらもとたつし #AppsForOffice 詰Excel Office用アプリの ツカイドコロ
  • 2. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 2 くらもと たつし 発表者について @セカンド ファクトリー
  • 3. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 3 UI & CLOUD Professional コンサル トレーニング 設計、開発 自社プロダクト開発 セカンド ファクトリー
  • 4. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 4 くらもと たつし 開発に従事 Tatsushi Kuramoto @ta2c ta2c
  • 6. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 6 47 観光した 県の数 国内旅行
  • 7. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 7 41 47 国内旅行 観光した 県の数
  • 8. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 8 前回 「slideshareta2c」でネットで検索
  • 9. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 9 今回 今夜以降「slideshareta2c」でネットで検索
  • 10. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 10 データ サンプルアプリ <お約束> サンプルに関して、万一ユーザーまたは第三者が何らかの損害を被った場合に おいても、一切の責任を負うことは出来ませんのでご了承ください。 http://1drv.ms/Zho851
  • 11. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 11 補足: 内容は 個人の見解であり 所属する組織の 公式見解では ありません
  • 13. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 13 今日はこんな話 をします
  • 14. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 14 詰将棋 将棋の 実践的な問題集 (相手の王様を 倒したら勝ち)
  • 15. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 15 654321 一 二 三 五 六 四 銀 金 玉 香 桂 角 桂 歩 金 桂
  • 16. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 16 654321 一 二 三 五 六 四 銀 金 玉 香 桂 角 桂 歩 金 桂
  • 17. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 17 654321 一 二 三 五 六 四 銀 金 玉 香 桂 桂 歩 金 桂 2四銀 角
  • 18. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 18 654321 一 二 三 五 六 四 銀 金 玉 香 桂 桂 歩 金 桂 角 2四銀 2五桂
  • 19. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 19 将棋の 実践的な問題集 詰将棋
  • 20. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 20 Excelの 実践的な問題集 将棋の 実践的な問題集 詰将棋 詰Excel
  • 21. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 21 300件の顧客データに、 ●●●列を追加して。 上司
  • 22. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 22 300件の顧客データに、 名前列を追加して。 上司
  • 23. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 23 300件の顧客データに、 名前列を追加して。 上司
  • 24. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 24 300件の顧客データに、 名前列を追加して。 上司
  • 25. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 25 300件の顧客データに、 名前列を追加して。 上司 銀 D4銀
  • 26. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 26 300件の顧客データに、 名前列を追加して。 上司 銀 D5圭 圭 D4銀
  • 27. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 27 Excelの 実践的な問題集 将棋の 実践的な問題集 詰将棋 詰Excel
  • 28. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 28 Excelの 実践的な問題集 詰Excel Office用アプリの 使いどころ
  • 30. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 30 氏名(フルネーム) →名前抽出
  • 31. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 31 300件の顧客データに、 名前列を追加して。 上司 <前提> 姓と名が 全角スペースで 区切られている
  • 32. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 32 岳 シンキングタイム 20秒
  • 33. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 33 [A]Excel関数 [B]Office用アプリ 岳
  • 34. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 34 [A]Excel関数 岳 田崎岳 全角スペースより右の 文字列を取得 [B]Office用アプリ
  • 35. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 35 全角スペースより右の 文字列を取得 [A]Excel関数 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) 岳 [B]Office用アプリ
  • 36. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 36 [A]Excel関数 [B]Office用アプリ 岳 ドラッグ 全角スペースより右の 文字列を取得 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1))
  • 37. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 37 [A]Excel関数 [B]Office用アプリ 岳 ドラッグ 全角スペースより右の 文字列を取得 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) DEMO
  • 38. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 38 [A]Excel関数 [B]Office用アプリ 岳 ダブル クリック ※おすすめ 全角スペースより右の 文字列を取得 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1))
  • 39. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 39 [A]Excel関数 [B]Office用アプリ 岳 全角スペースより右の 文字列を取得 左の行数分 コピー される [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1))
  • 40. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 40 [A]Excel関数 岳 全角スペースより右の 文字列を取得 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) [B]Office用アプリ
  • 41. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 41 [A]Excel関数 岳 全角スペースより右の 文字列を取得 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) [B]Office用アプリ 田崎岳 全角スペースで分割し 文字列の2番めを取る ① ②
  • 42. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 42 [A]Excel関数 岳 全角スペースより右の 文字列を取得 <C2の値>.split("")[1] [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) [B]Office用アプリ
  • 43. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 43 <!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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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用アプリ
  • 44. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 44 <!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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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用アプリ
  • 45. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 45 [A]Excel関数 [B]Office用アプリ 2列を選択して、実行ボタンを押す
  • 46. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 46 [A]Excel関数 [B]Office用アプリ 2列を選択して、実行ボタンを押す 太郎 花子 三郎 求めたい値が右列に入る
  • 47. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 47 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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文で②③処理繰り返し。 ③右列に名前をセット
  • 48. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 48 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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列 の値群を配列でゲット
  • 49. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 49 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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, コールバック関数);
  • 50. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 50 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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, コールバック関数); [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ]
  • 51. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 51 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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文で②③処理繰り返し。
  • 52. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 52 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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” }, コールバック関数); [ [“山田太郎”,”太郎”], [“鈴木花子”,”花子”], [“斉藤三郎”,”三郎”] ]
  • 53. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 53 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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” }, コールバック関数); [ [“山田太郎”,”太郎”], [“鈴木花子”,”花子”], [“斉藤三郎”,”三郎”] ] 太郎 花子 三郎
  • 54. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 54 [セル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次元配列 varbeforeMatrix= []; // 変換後の2次元配列 varafterMatrix= []; // 実行中の行番号 varconvertCounter= 0; Office.initialize= function(reason) {} window.onload= function() { varbtn= 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() { // 変換前のアイテム vartargetRow= beforeMatrix[convertCounter]; // 左のセル varoriginalValue= targetRow[0]; convertValue(originalValue, executeConvertItemCallback); } // 1件分変換を実行したあとのコールバック関数 function executeConvertItemCallback(originalValue, targetValue) { // 変換後のアイテム varconvertRow= [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; } // ============================================ // 個別プロパティ、メソッド // ■■■■■■■■■■■■■■■■■■■■■■ vartitle = "case.1"; function convertValue(beforeValue, inCallBack) { // 全角スペースで文字列を分割 varsplitArray= beforeValue.split(""); varafterValue= 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” }, コールバック関数); [ [“山田太郎”,”太郎”], [“鈴木花子”,”花子”], [“斉藤三郎”,”三郎”] ] 太郎 花子 三郎 DEMO
  • 55. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 55 [A]Excel関数 ①範囲選択したn行x2列 の値群を配列でゲット ④範囲選択したn行x2列に 配列をセット ②左列から名前を抽出 for文で②③処理繰り返し ③右列に名前をセット 岳 [セルD2に入力] =RIGHT(C2, LEN(C2)-FIND("",C2,1)) 全角スペースより右の 文字列を取得 [B]Office用アプリ
  • 56. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 56 [A]Excel関数 [B]Office用アプリ ○(1行で終わり) 1から作る △(コード量多い +Webサーバ必要) 岳
  • 57. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 57 [A]Excel関数 [B]Office用アプリ ○(1行で終わり) 1から作る △(コード量多い +Webサーバ必要) ◎(変更に追従) 誰かが作った ものを使う ○(変更に追従しない 岳
  • 58. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 58 [A]Excel関数 [B]Office用アプリ ○(1行で終わり) 1から作る △(コード量多い +Webサーバ必要) ◎(変更に追従) 誰かが作った ものを使う ○(変更に追従しない 岳 田崎今日子 今日子
  • 59. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 59 [A]Excel関数 [B]Office用アプリ ○(1行で終わり) 1から作る △(コード量多い +Webサーバ必要) ◎(変更に追従) 誰かが作った ものを使う ○(変更に追従しない ・右記以外は [A]Excel関数 使ったほうがよい。 ツカイドコロ ・あるOffice用アプリ の一部の機能 ・Wordで使う 岳
  • 61. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 61 ※今日の Office用アプリ 動かしてみたい
  • 62. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 62 [A]VisualStudio2013(有償版)を使う (Professional以上) [B]無料で頑張る ※今日の Office用アプリ 動かしてみたい
  • 63. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 63 [A]VisualStudio2013(有償版)を使う [B]無料で頑張る
  • 64. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 64 [A]VisualStudio2013(有償版)を使う [B]無料で頑張る マニフェスト XML html
  • 65. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 65 [A]VisualStudio2013(有償版)を使う [B]無料で頑張る 1. 今日の提供ソースのうち、 htmlのみ用意 マニフェスト XML html
  • 66. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 66 [A]VisualStudio2013(有償版)を使う [B]無料で頑張る 2. VisualStudio2013 と Update3をインストール •※参考 Visual Studio 2013 90 日間の無償評価版 http://www.visualstudio.com/ja-jp/downloads/download-visual-studio- vs#DownloadFamilies_1 •Visual Studio 2013 Update3 http://www.microsoft.com/ja-jp/download/details.aspx?id=43721
  • 67. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 67 [B]無料で頑張る 3. VisualStudio2013を起動。 4. 新しいプロジェクト>Office用アプリを選択 [A]VisualStudio2013(有償版)を使う
  • 68. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 68 [B]無料で頑張る 5. 「次へ」「次へ」 [A]VisualStudio2013(有償版)を使う
  • 69. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 69 [B]無料で頑張る 5. 「次へ」「次へ」 [A]VisualStudio2013(有償版)を使う
  • 70. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 70 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 6. App¥Home¥Home.htmlを開き、 今日のhtmlソースで全行差し替え。
  • 71. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 71 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 6. App¥Home¥Home.htmlを開き、 今日のhtmlソースで全行差し替え。
  • 72. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 72 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 7. 開始ボタン(F5キー)クリック
  • 73. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 73 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 8. セキュリティの警告は「はい」押下
  • 74. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 74 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 9. 動いた~
  • 75. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 75 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 9. 動いた~
  • 76. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 76 [B]無料で頑張る [A]VisualStudio2013(有償版)を使う 9. 動いた~
  • 77. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 77 [A]VisualStudio2013(有償版)を使う [B]無料で頑張る
  • 78. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 78 [A]VisualStudio2013(有償版)を使う マニフェスト XML html 1. 今日の提供ソース2つ両方 [B]無料で頑張る
  • 79. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 79 [A]VisualStudio2013(有償版)を使う マニフェスト XML html 1. 今日の提供ソース2つ両方 [B]無料で頑張る 日経ソフトウエア:Office用アプリ開発入門 第2回はじめてのOffice用アプリ(きぬあささん著) http://itpro.nikkeibp.co.jp/article/COLUMN/20140313/543266/ 2. 下のURLを参考に、設定をがんばる。
  • 80. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 80 [A]VisualStudio 2013 (有償版)を使う マニフェスト XML html 1. 今日の提供ソース2つ両方と、 共有フォルダ、Webサーバを用意。 Webサーバ(例:http://localhost/) [B]無料で頑張る 共有フォルダ(例:¥¥devpc¥apps)
  • 81. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 81 [A]VisualStudio 2013 (有償版)を使う マニフェスト XML html 2. 二つのファイルを下記のように配置。 共有フォルダ Webサーバ [B]無料で頑張る
  • 82. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 82 [A]VisualStudio2013(有償版)を使う 3. Excelの設定でマニフェストXMLを関連付ける [B]無料で頑張る
  • 83. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 83 [A]VisualStudio2013(有償版)を使う 4. アプリインストール [B]無料で頑張る
  • 84. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 84 [A]VisualStudio2013(有償版)を使う 4. アプリインストール [B]無料で頑張る
  • 85. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 85 [A]VisualStudio2013(有償版)を使う 5. 動いた~ [B]無料で頑張る
  • 88. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 88 300件の顧客データに、 ●●●列を追加して。 上司
  • 89. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 89 300件の顧客データに、 年齢列を追加して。 上司
  • 93. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 93 29 シンキングタイム 20秒
  • 94. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 94 [A]Excel関数 [B]Office用アプリ 29
  • 95. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 95 [A]Excel関数 [B]Office用アプリ 誕生日から今日までの 期間を取得 誕生日から今日までの 期間を取得 29
  • 96. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 96 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF(E2, TODAY(), "Y") 誕生日から今日までの 期間を取得 誕生日から今日までの 期間を取得 29
  • 97. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 97 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF(E2, TODAY(), "Y") 誕生日から今日までの 期間を取得 誕生日から今日までの 期間を取得 29 DEMO
  • 98. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 98 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF(E2, TODAY(), "Y") 誕生日から今日までの 期間を取得 誕生日から今日までの 期間を取得 29 [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] ①範囲選択したn行x2列 の値群を配列でゲット Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数);
  • 99. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 99 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF(E2, TODAY(), "Y") 誕生日から今日までの 期間を取得 誕生日から今日までの 期間を取得 29 ②左列から名前を抽出(Array.split(““)[1]) ③右列に名前をセット [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”太郎”], [“鈴木花子”,”花子”], [“斉藤三郎”,”三郎”] ] for文で②③処理繰り返し。
  • 100. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 100 [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文で②③処理繰り返し。 ①範囲選択を 配列でゲット
  • 101. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 101 [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”] ]
  • 102. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 102 [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”] ]
  • 103. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 103 [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”] ]
  • 104. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 104 [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からの 経過日数
  • 105. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 105 [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”] ]
  • 106. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 106 [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”,””] ]
  • 107. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 107 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF (E2, TODAY(),"Y") 第1引数から 第2引数までの 期間を返却 28 vartheDate= covertSerialValueToDate(31316); // (左列)をDate型に変換 function covertSerialValueToDate(inDateTime) { varexcelDateTimeSerialValue= inDateTime; varoneDayInMilliseconds= 86400000; varexcelOriginDateInMilliseconds= new Date(1899, 11, 31).getTime(); varval1 = Math.floor(excelDateTimeSerialValue); // Excelシリアル値の整数 部分 varval2 = excelDateTimeSerialValue-val1; // Excelシリアル値の小数部分 varday = oneDayInMilliseconds* (val1 -1); vartime = oneDayInMilliseconds* val2; vardateTime= day + time + excelOriginDateInMilliseconds; varresult = new Date(); result.setTime(dateTime); return result; } ※参考: http://origin809.wordpress.com/2013/12/10/first-step-of-apps-for-office/ ②左列(経過日数)を日付に変換 31316→ “1985/9/26”
  • 108. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 108 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF (E2, TODAY(),"Y") 第1引数から 第2引数までの 期間を返却 28 // 今日からの経過日数をDate型に変換 vardiffDate= new Date(new Date() –[生年月日のDate型]); // 年齢を算出 varage= diffDate.getUTCFullYear() -1970; ※参考:Javascriptで誕生日から現在の年齢を算出 http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8 ③日付から年齢を計算
  • 109. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 109 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF (E2, TODAY(),"Y") 第1引数から 第2引数までの 期間を返却 28 // 今日からの経過日数をDate型に変換 vardiffDate= new Date(new Date() –[生年月日のDate型]); // 年齢を算出 varage= diffDate.getUTCFullYear() -1970; ※参考:Javascriptで誕生日から現在の年齢を算出 http://qiita.com/n0bisuke/items/dd537bd4cbe9ab501ce8 ③日付から年齢を計算 DEMO
  • 110. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 110 [A]Excel関数 [B]Office用アプリ [セルF2] =DATEDIF(E2, TODAY(), "Y") ①範囲選択したn行x2列 の値群を配列でゲット ⑤範囲選択したn行x2列に 配列をセット ②左列を日付に変換 for文で②③④処理繰り返し ④右列に年齢をセット ③日付から年齢を計算 誕生日から今日までの 期間を取得 29
  • 111. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 111 [A]Excel関数 [B]Office用アプリ ○(1行で終わり) 1から作る △(コード量多い +Webサーバ必要) ◎(変更に追従) 誰かが作った ものを使う ○(変更に追従しない ・右記以外は [A]Excel関数 使ったほうがよい。 ツカイドコロ ・あるOffice用アプリ の一部の機能 ・Wordで使う 29
  • 114. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 114 300件の顧客データに、 ●●●列を追加して。 上司
  • 115. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 115 300件の顧客データに、 氏名のふりがな列を追加して。 上司
  • 116. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 116 300件の顧客データに、 氏名のふりがな列を追加して。 上司 ひらがなで。
  • 117. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 117 300件の顧客データに、 氏名のふりがな列を追加して。 上司 <前提> 姓と名が 全角スペースで 区切られている
  • 118. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 118 氏名(フルネーム) →ふりがな
  • 121. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 121 たざきがく シンキングタイム 20秒
  • 122. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 122 たざきがく [A]Excel関数 [B]Office用アプリ
  • 123. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 123 たざきがく [A]Excel関数 [B]Office用アプリ できるの? ネットに問合せすれば できるかも?
  • 124. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 124 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ネットに問合せすれば できるかも?
  • 125. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 125 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 ネットに問合せすれば できるかも?
  • 126. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 126 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う ネットに問合せすれば できるかも? [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 1. 氏名のセルを選択
  • 127. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 127 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う ネットに問合せすれば できるかも? [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 2. ふりがなの設定をクリック
  • 128. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 128 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う ネットに問合せすれば できるかも? [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 3. 種類で[ひらがな]を選択。
  • 129. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 129 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う ネットに問合せすれば できるかも? [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 4. ひらがなになる
  • 130. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 130 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。
  • 131. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 131 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 ★弱点あり。
  • 132. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 132 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 ★弱点あり。 ・フリガナ情報を 持たない Excelファイルには 使えません。 (例:CSV)
  • 133. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 133 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 ★弱点あり。 ・フリガナ情報を 持たない Excelファイルには 使えません。 (例:CSV) DEMO
  • 134. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 134 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。
  • 135. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 135 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。 ネットに問合せすれば できるかも?
  • 136. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 136 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] ①範囲選択したn行x2列 の値群を配列でゲット Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, コールバック関数); [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ]
  • 137. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 137 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API
  • 138. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 138 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI http://developer.yahoo.co.jp/webapi/jlp/furigana/v1/furigana.html
  • 139. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 139 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI ①Yahoo! IDを取得 ②アプリケーションIDを取得 ③URLをよぶ
  • 140. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 140 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI ②アプリケーションIDを取得 クライアント サイド
  • 141. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 141 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI ②アプリケーションIDを取得
  • 142. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 142 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI ③URLをよぶ http://jlp.yahooapis.jp/FuriganaService/V1/furigana ?appid=[②のアプリケーションID] &sentence=[山田太郎をURLエンコードした文字列]
  • 143. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 143 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API Yahooルビ振りAPI ③URLをよぶ http://jlp.yahooapis.jp/FuriganaService/V1/furigana ?appid=[②のアプリケーションID] &sentence=[山田太郎をURLエンコードした文字列]
  • 144. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 144 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API
  • 145. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 145 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API
  • 146. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 146 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API データ 取得できないエラー
  • 147. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 147 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API データ 取得できないエラー XML
  • 148. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 148 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API データ 取得できないエラー XML クロスドメイン エラー
  • 149. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 149 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API データ 取得できないエラー XML クロスドメイン エラー JSONPだったら よかったのに (クロスドメイン エラーにならない)
  • 150. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 150 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API
  • 151. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 151 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP
  • 152. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 152 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる
  • 153. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 153 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XML, HTML, RSS, CSV などをJSONPに 変換してくれる YQL (Yahoo! Query Language): 米国のYahoo提供 https://developer.yahoo.com/yql/
  • 154. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 154 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XML, HTML, RSS, CSV などをJSONPに 変換してくれる YQL (Yahoo! Query Language): 米国のYahoo提供 XML, HTML, RSS, CSVなどを JSONPに 変換できる ◇参考URL http://hail2u.net/blog/webdesign/scribble-something.html http://blog.yo41sawada.jp/weblog/tips/yql_cross-domain/ https://developer.yahoo.com/yql/
  • 155. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 155 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] 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* FROMyahoojp.jlp.furigana.furigana WHEREappid='" + appid+ "' and sentence='" + beforeValue+ "'", format: "json", env: "store://datatables.org/alltableswithkeys" }, function (json) { // 後処理 });
  • 156. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 156 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる
  • 157. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 157 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる ★弱点あり。
  • 158. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 158 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる ★弱点あり。 変換率100%ではない
  • 159. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 159 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,”やまだたろう”], [“鈴木花子”,”すずきはなこ”], [“斉藤三郎”,”さいとうさぶろう”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる ★弱点あり。 変換率100%ではない DEMO
  • 160. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 160 たざきがく [A]Excel関数 [B]Office用アプリ ふりがな取得関数を 使う Yahooルビ振りAPIと YQLとJSONPを使う [セルD2] =PHONETIC(C2) ・“ふりがなの設定”で 種類を[ひらがな]にする。
  • 161. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 161 [A]Excel関数 [B]Office用アプリ ・Excelファイルが ふりがな情報を 持っている場合 ツカイドコロ ・Excelファイルが ふりがな情報を 持っていない場合 たざきがく
  • 162. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 162 おまけ 自選:難読氏名5選
  • 163. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 163 四月一日君尋 (XXXHOLiC) わたぬききみひろ 鹿目まどか (魔法少女まどか☆マギカ) かなめまどか 初春飾利 (とある科学の超電磁砲) ういはるかざり 西谷夕 (ハイキュー!!) にしのやゆう 忍野忍 (<物語>シリーズ) おしのしのぶ
  • 164. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 164 四月一日君尋 (XXXHOLiC) わたぬききみひろ 鹿目まどか (魔法少女まどか☆マギカ) かなめまどか 初春飾利 (とある科学の超電磁砲) ういはるかざり 西谷夕 (ハイキュー!!) にしのやゆう 忍野忍 (<物語>シリーズ) おしのしのぶ ふりがなを Yahooに 問い合せて みた
  • 165. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 165 四月一日君尋 (XXXHOLiC) わたぬききみひろ 鹿目まどか (魔法少女まどか☆マギカ) かなめまどか 初春飾利 (とある科学の超電磁砲) ういはるかざり 西谷夕 (ハイキュー!!) にしのやゆう 忍野忍 (<物語>シリーズ) おしのしのぶ
  • 166. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 166 四月一日君尋 (XXXHOLiC) わたぬききみひろ おたぬききみひろ 鹿目まどか (魔法少女まどか☆マギカ) かなめまどか かめまどか 初春飾利 (とある科学の超電磁砲) ういはるかざり しょしゅんかざりとし 西谷夕 (ハイキュー!!) にしのやゆう にしやゆう 忍野忍 (<物語>シリーズ) おしのしのぶ おしのにん
  • 169. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 169 300件の顧客データに、 ●●●列を追加して。 上司
  • 170. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 170 300件の顧客データに、 名前列を追加して。 上司
  • 171. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 171 300件の顧客データに、 名前列を追加して。 上司 <前提> 姓と名は くっついている
  • 172. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 172 氏名(フルネーム) →名前抽出[その2]
  • 175. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 175 岳 シンキングタイム 20秒
  • 176. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 176 [A]Excel関数 [B]Office用アプリ 岳
  • 177. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 177 [A]Excel関数 [B]Office用アプリ 岳 田崎岳 田崎岳 全角スペースより右の 文字列を取得 全角スペースで分割し 文字列の2番めを取る ① ②
  • 178. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 178 [A]Excel関数 [B]Office用アプリ 岳 田崎岳 田崎岳 全角スペースより右の 文字列を取得 全角スペースで分割し 文字列の2番めを取る ① ②
  • 179. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 179 [A]Excel関数 [B]Office用アプリ 岳
  • 180. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 180 [A]Excel関数 [B]Office用アプリ 岳 林? 伊藤? 佐々木?
  • 181. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 181 [A]Excel関数 [B]Office用アプリ 岳 \(T_T)/ お手上げ
  • 182. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 182 [A]Excel関数 [B]Office用アプリ 岳 \(T_T)/ お手上げ Yahooルビ振りAPIと YQLとJSONPを使う
  • 183. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 183 たざきがく [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,””], [“鈴木花子”,””], [“斉藤三郎”,””] ] [ [“山田太郎”,“太郎”], [“鈴木花子”,”花子”], [“斉藤三郎”,”三郎”] ] Yahoo ルビ振り API YQL JSONP XMLをJSONPに 変換してくれる
  • 184. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 184 [A]Excel関数 [B]Office用アプリ 岳 \(T_T)/ お手上げ Yahooルビ振りAPIと YQLとJSONPを使う DEMO
  • 185. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 185 [A]Excel関数 [B]Office用アプリ \(T_T)/ お手上げ \(^o^)/ バンザイ 岳
  • 188. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 188 300件の顧客データに、 ●●●列を追加して。 上司
  • 189. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 189 300件の顧客データに、 郵便番号列を追加して。 上司
  • 193. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 193 954-0166 シンキングタイム 20秒
  • 194. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 194 954-0166 [A]??? [B]Office用アプリ
  • 195. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 195 954-0166 [A]??? [B]Office用アプリ なにかのWebAPIに 問い合わせる
  • 196. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 196 954-0166 [A]??? [B]Office用アプリ GoogleのAPIに聞く
  • 197. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 197 954-0166 [A]??? [B]Office用アプリ GoogleのAPIに聞く
  • 198. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 198 954-0166 [A]??? [B]Office用アプリ GoogleのAPIに聞く ※googleの変換API(ajaxzip3) [○] 郵便番号→住所 [X] 住所→郵便番号
  • 199. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 199 954-0166 [A]??? [B]Office用アプリ 住所→郵便番号変換 WebAPIに問い合わせ
  • 200. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 200 954-0166 [A]??? [B]Office用アプリ むずかしそう。。 住所→郵便番号変換 WebAPIに問い合わせ
  • 201. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 201 954-0166 ※住所→郵便番号をサポートしているWebAPI
  • 202. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 202 954-0166 ※住所→郵便番号をサポートしているWebAPI ・ぽすたん(http://www.postan.jp) ・IW3 PROJECT(http://project.iw3.org/zip_search_x0401) ・グルーブテクノロジーWebサービス (http://groovetechnology.co.jp/webservice/)
  • 203. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 203 954-0166 ※住所→郵便番号をサポートしているWebAPI ・ぽすたん(http://www.postan.jp) ・IW3 PROJECT(http://project.iw3.org/zip_search_x0401) ・グルーブテクノロジーWebサービス (http://groovetechnology.co.jp/webservice/) 新潟県長岡市 郵便番号 検索API たくさん(50件以上)
  • 204. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 204 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件) 新潟県長岡市 海老島勇次新田
  • 205. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 205 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
  • 206. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 206 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
  • 207. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 207 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
  • 208. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 208 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 全角数字で 判定する?
  • 209. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 209 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
  • 210. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 210 954-0166 [A]??? [B]Office用アプリ むずかしそう。。 住所→郵便番号変換 WebAPIに問い合わせ
  • 211. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 211 954-0166 [A]Excelアドイン [B]Office用アプリ むずかしそう。。 郵便番号変換ウィザード を使う 住所→郵便番号変換 WebAPIに問い合わせ
  • 212. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 212 954-0166 [A]Excelアドイン [B]Office用アプリ むずかしそう。。 郵便番号変換ウィザード を使う 住所→郵便番号変換 WebAPIに問い合わせ <必要なこと> 1) アドインダウンロード 2) Excelに組み込む 3) 使う
  • 213. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 213 954-0166 Excel アドイン:郵便番号変換ウィザード@CodePlex http://excelzipcode7japan.codeplex.com/
  • 214. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 214 954-0166 1. [download]をクリックして、アドインをダウンロードする http://excelzipcode7japan.codeplex.com/ 導入編
  • 215. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 215 954-0166 2. ファイルのプロパティを開き、[ブロックの解除]をクリック
  • 216. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 216 954-0166 3. Excelのオプション>アドイン>設定をクリック
  • 217. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 217 954-0166 4. 参照をクリック
  • 218. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 218 954-0166 5. アドインファイルを選択してOKクリック
  • 220. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 220 954-0166 1. アドイン>ウィザード>郵便番号変換を選択 使用編
  • 221. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 221 954-0166 2.住所から郵便番号を生成するを選択して[次へ]
  • 222. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 222 954-0166 3.住所データの範囲と、郵便番号を出力したい範囲を設定
  • 223. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 223 954-0166 4.書式は[文字列]を選択して次へ
  • 224. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 224 954-0166 5.[完了]をクリック
  • 227. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 227 954-0166 [A]Excelアドイン [B]Office用アプリ むずかしそう。。 郵便番号変換ウィザード を使う 住所→郵便番号変換 WebAPIに問い合わせ <必要なこと> 1) アドインダウンロード 2) Excelに組み込む 3) 使う
  • 228. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 228 954-0166 [A]Excelアドイン [B]Office用アプリ △(導入ちょっと大変 1から作る ○(ウィザード形式で できる) 誰かが作った ものを使う ・この方法1択 ではないか? ツカイドコロ
  • 231. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 231 まとめ なんでもかんでも Excel関数 なんでもかんでも Office用アプリ なんでもかんでも VBA なんでもかんでも VSTO
  • 232. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 232 まとめ なんでもかんでも Excel関数 なんでもかんでも Office用アプリ なんでもかんでも VBA なんでもかんでも VSTO
  • 233. #AppsForOffice 詰Excel/くらもとたつし(@ta2c) 233 まとめ なんでもかんでも Excel関数 なんでもかんでも Office用アプリ なんでもかんでも VBA なんでもかんでも VSTO 問題に応じて 最適な手法を 使いましょう