3

毎日更新されるカウンターのリストである単純なExcelスプレッドシートがあります。シートのフォーマットは次のとおりです。

A         B          C             D          E
date      name       computer      info       counter

例:

A             B          C         D              E
04/04/2012    John       186       Workstation    4813
04/04/2012    Mary       181       Workstation    2273
04/05/2012    John       186       Workstation    4822
04/05/2012    Mary       181       Workstation    2274
04/06/2012    John       186       Workstation    4854
04/06/2012    Mary       181       Workstation    2275
04/06/2012    Bill       183       Workstation    3698

と息子に....

私ができる必要があるのは、すべての細胞のように結合することです。たとえば、各月のすべての行を結合し、最初の列から最後のE列を引くと、新しいシートでは次のようになります。

A             B          C         D              E
April 2012    John       186       Workstation    41
April 2012    Mary       181       Workstation    2
April 2012    Bill       183       Workstation    0

それぞれについても同様です...これは毎日更新され、何日、何ヶ月、何年もかかることを覚えておいてください。

これをどうやって考えるかすらわかりませんが、マクロが必要だと思います。誰かが何か助けがあれば素晴らしいでしょう!

4

2 に答える 2

2

これがあなたがやりたいことだと仮定して

私はこれにしばらく時間を費やしました、そして私はあなたが必要とするものをついに手に入れたように感じます。サンプルファイルをアップロードしたと思いますが、ファイル共有サイトはここでブロックされています:)。

これで、出力を別のタブに表示したいのですが、今のところはこれに耐えてください。

次の解決策は時間がかかります(質問の性質上予想されます)。ここで行われていることに従ってTを実行し、一部のセルでポップアップする可能性のある中間エラーについては気にしないでください。いずれはすべて解決されます。

あなたのシートは画像の黄色い部分のように見えると思います。(最初の列の日付は気にしないでください。すべて2012年4月の日付です。それが重要です。)

セルF2に、次の数式を貼り付けます

=IF(A2="","",MONTH(A2))

セルG2に、次の数式を貼り付けます。

=IF(A2="","",YEAR(A2))

セルH2に、次の数式を貼り付けます。

=IF(B2="","",B2&"|"&F2&"@"&G2)

「|」の文字を使用しています ここでの「@」は、名前の場合は発生しないと想定しているためです。そうかどうか確認してください!!

次に、セルF2をH2にコピーし、データがある場所までそれらを完全に貼り付けます。

ここで、8000行のデータがあることも前提としています。8000行を超える場合は、次の数式のすべての「8000」を必要な数に置き換えてください。

セルQ2に、次の数式を貼り付けます。

=IF(ISERROR(INDEX($H$2:$H$8000,MATCH(0,COUNTIF($Q$1:Q1,$H$2:$H$8000),0))),"",INDEX($H$2:$H$8000,MATCH(0,COUNTIF($Q$1:Q1,$H$2:$H$8000),0)))

これは配列数式であり、Ctrl + Shift+Enterで入力する必要があることに注意してください。したがって、Q2では、この数式を数式バーに貼り付け、Enterキーを押す代わりに、Ctrl + Shift+Enterキーを押します。私はここからこの式を借りました。この式がどのように機能するかについては、サイトをチェックしてください。

次に、セルK2に次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",LEFT(Q2,FIND("|",Q2)-1))

セルP2に、次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",VALUE(RIGHT(Q2,LEN(Q2)-(FIND("@",Q2)))))

セルO2に、次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",VALUE(MID(Q2,FIND("|",Q2)+1,LEN(Q2)-LEN(K2)-LEN(P2)-2)))

セルJ2に、次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",TEXT(DATE(P2,O2,1),"mmm yyyy"))

セルL2に、次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",INDEX($C$2:$C$8000,MATCH(K2,$B$2:$B$8000,0)))

セルM2に、次の数式を貼り付けます

=IF(OR(Q2=0,Q2=""),"",INDEX($D$2:$D$8000,MATCH(K2,$B$2:$B$8000,0)))

セルN2に、次の数式を貼り付けます。

=IF(OR(Q2=0,Q2=""),"",MAX(IF((($B$2:$B$8000=K2)*($F$2:$F$8000=O2)*($G$2:$G$8000=P2)),($E$2:$E$8000)))-MIN(IF((($B$2:$B$8000=K2)*($F$2:$F$8000=O2)*($G$2:$G$8000=P2)),($E$2:$E$8000))))

繰り返しになりますが、これは配列数式であり、Ctrl + Shift+Enterで入力する必要があることに注意してください。上記のすべての手順を完了したことを確認してください

次に、J2からQ2までのセルを選択し、それらをコピーして、必要なところまで貼り付けます。スクリーンショットの例では、これは行番号5までになります(すべての可能性をカバーするため)。

最終的に必要なテーブルができました。これで、単純な「等しい」関係を使用して、このテーブルを他の場所にリンクできます。また、必要に応じて、これらの余分な列をすべてデータシートから非表示にすることができます。

ふぅ!それがあなたの問題を解決したことを本当に願っています!! 私はこのすべての努力のために背中を軽くたたく価値があると思います!! それが役に立てば幸い!:)

于 2012-04-24T18:01:09.370 に答える
0

Fシートに4つの新しい列( 〜 )を追加Iし、次の数式を入力します:( 100行のデータを想定:必要に応じて調整します!

F --> =DATE(YEAR(A1), MONTH(A1), 1)

G --> =MIN(IF(($B$1:$B$100=$B1)*($C$1:$C$100=$C1)*($D$1:$D$100=$D1)*($F$1:$F$100=$F1),$E$1:$E$100)) [press CTRL+SHIFT+ENTER (this is an array formula)]

H --> =MAX(IF(($B$1:$B$100=$B1)*($C$1:$C$100=$C1)*($D$1:$D$100=$D1)*($F$1:$F$100=$F1),$E$1:$E$100)) [press CTRL+SHIFT+ENTER (this is an array formula)]

I --> =H1-G1

(下にドラッグして、数式をすべての行に展開します)

次のようになります。

A             B          C         D              E       F                              G                              H                              I
04/04/2012    John       186       Workstation    4813    =DATE(YEAR(A1), MONTH(A1), 1)  {=MIN(IF(($B$1:$B$100=$B1)...  {=MAX(IF(($B$1:$B$100=$B1)...  =H1-G1
04/04/2012    Mary       181       Workstation    2273    =DATE(YEAR(A2), MONTH(A2), 1)  {=MIN(IF(($B$1:$B$100=$B2)...  {=MAX(IF(($B$1:$B$100=$B2)...  =H2-G2
04/05/2012    John       186       Workstation    4822    =DATE(YEAR(A3), MONTH(A3), 1)  {=MIN(IF(($B$1:$B$100=$B3)...  {=MAX(IF(($B$1:$B$100=$B3)...  =H3-G3
04/05/2012    Mary       181       Workstation    2274    =DATE(YEAR(A4), MONTH(A4), 1)  {=MIN(IF(($B$1:$B$100=$B4)...  {=MAX(IF(($B$1:$B$100=$B4)...  =H4-G4
04/06/2012    John       186       Workstation    4854    =DATE(YEAR(A5), MONTH(A5), 1)  {=MIN(IF(($B$1:$B$100=$B5)...  {=MAX(IF(($B$1:$B$100=$B5)...  =H5-G5
04/06/2012    Mary       181       Workstation    2275    =DATE(YEAR(A6), MONTH(A6), 1)  {=MIN(IF(($B$1:$B$100=$B6)...  {=MAX(IF(($B$1:$B$100=$B6)...  =H6-G6
04/06/2012    Bill       183       Workstation    3698    =DATE(YEAR(A7), MONTH(A7), 1)  {=MIN(IF(($B$1:$B$100=$B7)...  {=MAX(IF(($B$1:$B$100=$B7)...  =H7-G7

結果は次のとおりです。

A             B          C         D              E       F              G        H        I
04/04/2012    John       186       Workstation    4813    04/01/2012     4813     4854     41
04/04/2012    Mary       181       Workstation    2273    04/01/2012     2273     2275     2
04/05/2012    John       186       Workstation    4822    04/01/2012     4813     4854     41
04/05/2012    Mary       181       Workstation    2274    04/01/2012     2273     2275     2
04/06/2012    John       186       Workstation    4854    04/01/2012     4813     4854     41
04/06/2012    Mary       181       Workstation    2275    04/01/2012     2273     2275     2
04/06/2012    Bill       183       Workstation    3698    04/01/2012     3698     3698     0

わかりやすくするために、別のシートで関連データの参照を取得しましょう。上記のデータがに保存されていると仮定してSheet1、次のように入力しますSheet2

A           B            C           D           E
=Sheet1!F1  =Sheet1!B1   =Sheet1!C1  =Sheet1!D1  =Sheet1!I1
=Sheet1!F2  =Sheet1!B2   =Sheet1!C2  =Sheet1!D2  =Sheet1!I2
...

結果は次のとおりです。

A             B          C         D              E
04/01/2012    John       186       Workstation    41
04/01/2012    Mary       181       Workstation    2
04/01/2012    John       186       Workstation    41
04/01/2012    Mary       181       Workstation    2
04/01/2012    John       186       Workstation    41
04/01/2012    Mary       181       Workstation    2
04/01/2012    Bill       183       Workstation    0

最後に、Sheet2

于 2012-04-24T18:25:18.887 に答える