0

私はこのようなデータセットを持っています

id, value1,value2,value3,value4,value5...value200 (i am showing only 5 but solution needs to accomodate 200 values)
a, 10,4,2,0,0
b, 23,0,0,2,0
c, 0,2,4,0,0
d, 0,0,0,1,0

各行の値の数の COUNT を返したいのですが、末尾にはゼロしかありません。

上記のデータの場合、次のようになります。

3
4
2
1

ソリューションは、C# または Excel (vba ではなく数式) のいずれかです。

ご協力いただきありがとうございます。/ガイダンスと、私が明確でない場合はお知らせください

4

3 に答える 3

2

ファイルを CSV データとして読み込んで手動で解析する場合、次のようにして、最初と最後にゼロ以外の最初のエントリを見つけることができます。

// prepare sample data (as CSV)
var csv =
@"id, value1,value2,value3,value4,value5
a, 10,4,2,0,0
b, 23,0,0,2,0
c, 0,2,4,0,0
d, 0,0,0,1,0";

// get column data
var lines = csv.Split('\n');
var rows = lines.Skip(1).Select (
    line => line.Split(',').Skip(1).Select (l => Convert.ToInt32(l)));
var result = new List<int>();

foreach (var row in rows)
{
    // for each row, remove 0's at beginning and end
    var data = row.SkipWhile (r => r == 0).Reverse()
        .SkipWhile (r => r == 0).Reverse();
    // and retrieve the count
    result.Add(data.Count());
}
// result = [3, 4, 2, 1]
于 2012-04-26T22:32:08.917 に答える
1

ここに私が考えた解決策があります:

  1. 値の行を連結する
  2. 数値に変換します (これにより、先頭のゼロが削除されます)
  3. セルの mid() を取得し、最初の 0 の開始位置で終了します (これにより、末尾の 0 が削除されます)
  4. 最終的な文字列の長さを取得します (これにより、必要な結果が正確に得られます)
于 2012-05-01T20:39:50.080 に答える
-1

エクセル配列数式. Ctrl+Shift+Enter を押して、式の入力を確認します。

=MAX((B2:F2>0)*COLUMN(B2:F2))-MATCH(1,--(B2:F2>0),0)-0

これは、対象のデータが列 B で始まることを前提としていることに注意してください。-0データが別の列で始まる場合は、最終的なものを変更する必要があります。

于 2012-04-27T01:34:49.900 に答える