/// <summary> /// Rangeオブジェクトの1行に対して重複チェックを行います。 /// </summary> /// <param name="range">検索対象のRangeオブジェクト</param> /// <param name="exclude">除外したいキーワード</param> /// <returns></returns> public static string duplicateCheck(Excel.Range range, params string[] exclude) { if (range.Columns.Count >= 2) { throw new ArgumentOutOfRangeException(); } string[] src = range.ColumnToString(); return(null); }
/// <summary> /// [拡張]Rangeオブジェクトの各行に対して重複している要素を抽出します。 /// </summary> /// <returns></returns> public static List <int[]> extractDuplicate(this Excel.Range range) { if (range.Columns.Count >= 2) { throw new ArgumentOutOfRangeException(); } List <int[]> ret = new List <int[]>(); // 文字列に変換 string[] columnstring = range.ColumnToString(); // 配列空白以外の要素のクエリ var query = from x in columnstring where x != "" select x; // 空白以外の要素数 // 重複及び空白以外の要素数 // 2つの要素数が同じであれば、重複はないのでnullを返す。 if (query.Count() == query.Distinct().Count()) { return(null); } // 重複判定部分 else { /* 重複のみの要素のクエリを作成します。 * * <作成手順> * 1)重複を入れるリストに1行すべての要素を追加します。 * 2)この要素から、重複を取り除いた要素を引き算します。(これで2つ以上あるものだけのリストになる) * 3)3つ以上のものはまだ2つ以上残っているので、distinctしたクエリを作成します。 * 4)完成!! */ List <string> exceptlist = new List <string>(query); foreach (string s in query.Distinct <string>()) { exceptlist.Remove(s); } var exceptquery = exceptlist.Distinct <string>(); foreach (string s in exceptquery) { ret.Add(Util.deepSearch(columnstring, s)); } } return(ret); }
/// <summary> /// [拡張]Rangeクラスのオブジェクトの1列目(縦)を文字列配列に変換します。 /// </summary> /// <returns>1次元の文字列配列を返します。</returns> public static string[] ColumnToString(this Excel.Range range) { return(range.ColumnToString(1)); }