実務で効率的に作業を行う為の自分用Tips(随時追加)
・要件定義、情報集約
1)異なるシートのデータを参照してSQL等を作成したい場合は、INDIRECTを
使用する
例)テーブル名と、データを各シートから抽出してSQL文生成
CREATE TABLE A_TABLE
VALUE=....
シート名
A_Sheet
シート名一覧
A_Sheet
B_Sheet
2)全シートを一つのファイルにまとめてフィルタをかけて検索しやすいようにする
3)動的にExcelシートの値を取得する
動的な取得に必要な情報
・データ取得開始行数:固定値。各シートで取得開始する行数は
一致させておくこと。
・データ取得列数:
=MATCH(取得したい列の名前,INDIRECT(シート名 & "!A3:Z3"),0)
・データ行数
=COUNTA(INDIRECT(ADDRESS(データ取得行数,データ取得列数,,,シート名)):INDIRECT(ADDRESS(データ取得行数+200000,データ取得列数,,,シート名)))
・データ取得
=IF(ROW()-11<データ取得開始行数+データ行数,INDIRECT(ADDRESS(ROW()-11,データ取得列数,,,シート名)))
・テスト
効率的に進める為、
テスト実施時⇒一緒に確認できる項目を集約して、試験実施回数を減らす
テスト仕様書作成時⇒
汎用的にドキュメントを使用できるよう、テスト機能名
に基づく情報を一つのシートにまとめて、VLOOPUP等を
使用する
例)
機能名
「A機能」 機能一覧
機能名 使用テーブル名 出力ファイル名
A機能
B機能
⇒「A機能」を「B機能」に変更すると、VLOOKUPが「B機能」を
機能一覧の中から探して値を自動的に変更
・テスト仕様書の合否の付け方について
⇒試験前の統一事項として、人によりOK、合などと名称が異なる可能性がある為
・Wordで次の章まで行く前にEnter連打したくない場合
改ページを挿入する。
Ctrl+Enter
・見積もり
タイトル:見積もりを行う機能名
要件:お客様がどのような機能を求めているか
前提条件:今回の機能が実行される為にどのような手順を踏むか
影響範囲:今回の修正でどの機能に影響するか(追加テストが必要になるか)
各機能ごとの見積もり:今回の機能+影響範囲について、
規模(Step数)、各段階の工数(設計、製造、単体、結合)(~H)の工数を算出し、
合計を出す
設計:ページ枚数、工数により算出
製造:作成工数(新規工数+流用工数)、フロー作成工数
トランザクション工数を元に算出
単体、結合:項目数、作成、実施、バグ対応の工数を元に算出
・プロジェクトの流れ
見積もり
要因計画
借用書(PC等)
進捗表作成、更新
資料作成
打ち合わせ
レビュー
QA対応
環境整備
リリース対応
マニュアル作成
・帳票テスト観点
・条件に一致するデータが出ること
・条件に一致しないデータが出ないこと
・集計方法が帳票イメージどおりか(集計単位)
・計算式、計算範囲、計算結果が正しいか(一部が文字列かして値が合わなかったり
しないか)
・Word文書の最終チェック方法
表記ゆれチェックをかける
印刷プレビューを見て問題ないか確認する
⇒不要な白紙ページ等、改行位置不正
・Wordのハイパーリンクで青色にならない参照をする方法
[参考資料]-[相互参照]
・Wordで次ページに内容が続くような場合に表の見出しを自動的に表示する方法
1.表の見出しに使う行を選択します。
2.[罫線]メニューの[タイトル行の繰り返し]をクリックします。
・edmxの更新方法
edmxをダブルクリック⇒デザイナ内でモデルブラウザーを選択
⇒edmx内で右クリック⇒更新
・edmxでストアドから取得するデータをNULL許容にする方法
モデルブラウザーを選択⇒複合型⇒ストアド名⇒カラムを選択
プロパティ画面のNULL許容をTrueに設定
・プロジェクトで大事な観点
管理者権限かどうか(管理者でないと、ファイルが削除できなかったり、共有
メモリを生成できなかったりする)
・Excelで英数字のなかからアルファベットだけ取り出す数式
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(H20, 1, ""), 2, ""),3,""),4,""),5,""),6,""),7,""),8,""),9,"")
・Excelで現在列のアルファベットのみ抽出する数式
=LEFT(ADDRESS(ROW(), COLUMN(),4,1),LEN(ADDRESS(ROW(),COLUMN(),4,1))-LEN(ROW()))
・Excelで改行を入れる数式
=CHAR(10)
⇒セルの折り返しも入れること!
・一つのセルを複数のセルから参照させ、
かつ、変更箇所は一つにする方法
⇒数式を表示していながら、自動更新もさせたい
①アドレス関数を使用して、共通で参照できるクッションを作成する
*自動更新できるよう、参照する列のセルの名前に気を付ける
=ADDRESS(1, COLUMN(~!J1),1,1,G2)
②①を使用してOFFSETをしようして、目的の値を取得する
①を使用しているので、カウンタが+1になっている。-1すること。
=CONCATENATE("0x", OFFSET(INDIRECT(G$1),105-1,0,1,1))
・エクセルでマッチ関数を使用する場合の注意点
MATCHする範囲を指定する際、直接シートを参照せずに、
INDIRECT等を使用して参照すると、セルの範囲が増えたりした際に対応できない
為、名前の定義で定義したセル範囲を参照させるようにする
=IF(E81<>"",OFFSET(INDIRECT(G$1), MATCH($D81,INDIRECT(G$3),0)-1,0,1,1),"")
のようにしない。
・シート名取得関数
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
・UML作成
ソリューションエクスプローラでプロジェクトを右クリック
クラスダイアグラムで表示
・XSD作成方法
スタート⇒プログラム⇒Visual Studio2010m⇒Visual Studio Tools
Visual Studio コマンドプロンプト(2010)
xsd C:\test\RequestURL.xml
xsd /l:cs /d c:\test\RequestURL.xsd
ソリューションエクスプローラで既存の項目として追加
プロパティ⇒埋め込まれたリソース
・Viaual Studioでビルド時に必要なファイルをコピーする方法
コピーしたいファイルをソリューションエクスプローラー上で右クリック⇒プロパティ
新しい場合はコピーにプルダウンを変更
・Dictionaryクラスの初期化
= new Dictionary<string, string>(){ "a", "b"}}
・Visual Studio からエクセルを操作(COMオブジェクトとして操作)する場合に
コピーモードを解除する方法
tempExcel.CutCopyMode = 0;
・エクセル 行、列挿入時の注意点
結合セルの場合を考慮する
if(true.Equals(currentRange.MergeCells))
{
currentRange = currentRange.MergeArea;
}
行挿入の方法
//"{0}:{1}" コピー元のセル、コピー元のセル+コピー元のセル範囲
//"{0}:{1}" コピー元のセル+1、コピー元のセル+コピー元のセル+1+コピー元のセル範囲
Excel.Range rngSrc = tempWorkSheet.get_Range(string.Format("{0}:{1}", currentRange.Row + (iLoopCount * currentRange.Rows.Count), currentRange.Row + (iLoopCount * currentRange.Rows.Count) + currentRange.Rows.Count - 1));
rngDest.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
列挿入の方法
// 次の列のセル+挿入する件数-1を取得
Excel.Range rngDest = tempWorkSheet.Cells[currentRange.Row, currentRange.Column + *1
{
rngDest = rngDest.MergeArea;
}
rngDest = rngDest.EntireColumn;
string[] dst = rngDest.Address.Split(':');
// 列挿入用(pastespecial)
Excel.Range rngPasteDest = tempWorkSheet.get_Range(string.Format("{0}:{1}", src[0], dst[1]));
・foreachで最初、最後に何か処理したい
Array.First()
Array.Last()
⇒ただし、Dictionaryでもない限り、最初の値、最後の値であることを確実に判断できない
・ソースのプロジェクト名を変更する方法
リファクターで名前変更
+ソリューションファイル全置換
+ソリューションのフォルダ名変更
+クリーン
+リビルド
*1:iStartCount + insrtColsCount - 1) * currentRange.Columns.Count)];
if (true.Equals(rngDest.MergeCells