Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5280 / 13646 ツリー ←次へ | 前へ→

【51685】日報の自動集計 うらうら 07/9/30(日) 21:00 質問[未読]
【51689】Re:日報の自動集計 Jaka 07/10/1(月) 11:08 回答[未読]
【51695】Re:日報の自動集計 うらうら 07/10/1(月) 12:59 お礼[未読]
【51712】Re:日報の自動集計 Jaka 07/10/1(月) 15:36 発言[未読]
【51722】Re:日報の自動集計 ちん 07/10/2(火) 7:54 回答[未読]
【51734】Re:日報の自動集計 うらうら 07/10/2(火) 22:14 お礼[未読]
【51753】Re:日報の自動集計 ちん 07/10/3(水) 16:48 回答[未読]
【51779】Re:日報の自動集計 うらうら 07/10/4(木) 13:00 お礼[未読]

【51685】日報の自動集計
質問  うらうら E-MAIL  - 07/9/30(日) 21:00 -

引用なし
パスワード
   エクセルで25名ほどの日報管理をしたいと考えておりますが、自動集計となると自分のスキルを超えております。項目には製造番号と製品名と作業をする作業コードと作業名それと時間と作業者コードと作業者ですが、集計するときに製造番号を最初のキーで昇順でならびかえ、且つ作業コードでこちらも昇順にしたいと思います。
小さなコードが沢山ありますから、同一コードが連続で並ぶと見にくいので、
同一コードや名称の重複する内容はなくして、一覧にしたいと思っております。
いろいろ調べてみますが、並び替えができかったり、重複する名称が消せなかったりします。皆様のお知恵をどうか貸して下さいお願いいたします。

【51689】Re:日報の自動集計
回答  Jaka  - 07/10/1(月) 11:08 -

引用なし
パスワード
   質問文を良く把握できてませんが
>同一コードが連続で並ぶと見にくいので、
だけ反応します。
見にくいのは人間だけで、エクセルやマクロにとってはないとわかりにくい物です。

A列が対象として、単純に上のセルと同じコードだったら、文字を白くして見た目見えなくするとか、
条件付書式 数式がで、A2以降。(データが多いと重くなる欠点があるけど。)
=$A1=$A2

こうすればソートもできます。
他、CountIFで数を数えて、白くしても良いだろうし....。

あまり人間の都合だけで、人間に見やすいデータ状態にすると後々メンテするのも大変ですよ。
セルの結合なんてのも、人間の都合だけの形式ですね。

人間に見やすいシートを用意するのも手かも知れませんね。

【51695】Re:日報の自動集計
お礼  うらうら  - 07/10/1(月) 12:59 -

引用なし
パスワード
   早速のご意見有難う御座います。重複内容の非表示ですが、自動集計した項目を
整列かけて、製造番号を第一キー、作業コードを第二キーとして集計させたいのです。
想像頂ければ幸いですが、アクセスでデータを集計表示した形で、エクセルシートにて
ディスプレイ上で再現できないのかな?と言うことをVBAのお詳しい方からお知恵を拝借したいという内容でした。ワンシートであれば、別シートでIF文で上記の内容を(””)で非表示する手段もありますが、複数の別シートを集めて(できれば自動集計)それを
行いたいという希望です。ならアクセスでできるならば、そうすればと思われるでしょうが、パソコンが行き届いてない環境下での、データ入力がオフラインで行って後から
そのファイルを集計するという事を行おうとする意味からです。

【51712】Re:日報の自動集計
発言  Jaka  - 07/10/1(月) 15:36 -

引用なし
パスワード
   >アクセスでデータを集計表示
アクセスは、触ったことが無いのでよく解りませんが、
ポイントポイントで見ていくと、

>複数の別シートを集めて(できれば自動集計)
自動集計は無理かもしれませんが、
データ → 統合
で、できるかもしれません。

集計なら、
データ → 集計 か、グループとアウトライン
で、代用できるかもしれません。

【51722】Re:日報の自動集計
回答  ちん  - 07/10/2(火) 7:54 -

引用なし
パスワード
   おはようございます。ちんといいます。横から失礼します。
自動集計に関しては、ピボットテーブルを使用すれば集計できそうですが、私もほとんど使用したことがないので、勉強を兼ねて習得してみて下さい。

同一コードや名称の重複を解決する方法について、
SHEET1に実データを置き、SHEET2は、SHEET1のデータをリンク貼り付けし、表示用にしようする。

SHEET2のセルには、式を記述。
=IF(SHEET1!A2<>"",IF(SHEET1!A2=SHEET1!A1,"",SHEET1!A2),"")

※A列の2行目の値をセットする前に、1行目の値と同じならセットしない。

あとは、コピーして、配置すれば、同じデータは表示されません。

以上、参考までに・・・

【51734】Re:日報の自動集計
お礼  うらうら E-MAIL  - 07/10/2(火) 22:14 -

引用なし
パスワード
   ▼ちん さん:
同一データの表示しないについて、大変参考になりました。
しかし、問題が一つあり重複するものの集計が必要となります。製番とか作業コードが毎回必ずしも同じ種類でないので、ピポットは使えないのではないかと思います

【51753】Re:日報の自動集計
回答  ちん  - 07/10/3(水) 16:48 -

引用なし
パスワード
   こんにちは、ちんといいます。
>同一データの表示しないについて、大変参考になりました。
>しかし、問題が一つあり重複するものの集計が必要となります。製番とか作業コードが毎回必ずしも同じ種類でないので、ピポットは使えないのではないかと思います

VBAで作成するのであれば、
日報データの最終列に、ソート用の項目をVBAによりセットする。
FOR文 または、DO 〜 LOOP命令で、(先頭行から最終行まで)データを読み込み、各コードをソート用の列にセットします。

'**** ソート用のキーをセットする
FOR i = 1 TO 最終行
 SHEET1.CELLS(i,ソート用の列位置).Value = FORMAT(SHEET1.CELLS(i,コード1の列位置).Value,"0000") & FORMAT(SHEET1.CELLS(i,コード2の列位置).Value,"0000") & ・・・

NEXT i

'**** ソートの実行
Selection.Sort Key1:=Range("ソート用の列"), ・・・

'**** 同一名称の消去
OLD_名称=""
FOR i = 1 TO 最終行
 IF OLD_名称 = SHEET1.CELLS(i,名称の位置).Value THEN
   SHEET1.CELLS(i,名称の位置).Value = ""  <--- 同じ名称は消す
 ELSE
  IF OLD_名称 = "" then
   
  ELSE
   OLD_名称 = SHEET1.CELLS(i,名称の位置).Value 

   一行下へ挿入の命令を実行。
   合計の式を、入れる。
  END IF
 END IF
NEXT i

以上、試してませんが、参考までに・・・

【51779】Re:日報の自動集計
お礼  うらうら  - 07/10/4(木) 13:00 -

引用なし
パスワード
   ちんさんへ
ど素人にも分かるような、丁寧はアドバイス有難う御座います
一度チャレンジしてみます。
以上
▼ちん さん:
>こんにちは、ちんといいます。
>>同一データの表示しないについて、大変参考になりました。
>>しかし、問題が一つあり重複するものの集計が必要となります。製番とか作業コードが毎回必ずしも同じ種類でないので、ピポットは使えないのではないかと思います
>
>VBAで作成するのであれば、
>日報データの最終列に、ソート用の項目をVBAによりセットする。
>FOR文 または、DO 〜 LOOP命令で、(先頭行から最終行まで)データを読み込み、各コードをソート用の列にセットします。
>
>'**** ソート用のキーをセットする
>FOR i = 1 TO 最終行
> SHEET1.CELLS(i,ソート用の列位置).Value = FORMAT(SHEET1.CELLS(i,コード1の列位置).Value,"0000") & FORMAT(SHEET1.CELLS(i,コード2の列位置).Value,"0000") & ・・・
>
>NEXT i
>
>'**** ソートの実行
>Selection.Sort Key1:=Range("ソート用の列"), ・・・
>
>'**** 同一名称の消去
>OLD_名称=""
>FOR i = 1 TO 最終行
> IF OLD_名称 = SHEET1.CELLS(i,名称の位置).Value THEN
>   SHEET1.CELLS(i,名称の位置).Value = ""  <--- 同じ名称は消す
> ELSE
>  IF OLD_名称 = "" then
>   
>  ELSE
>   OLD_名称 = SHEET1.CELLS(i,名称の位置).Value 
>
>   一行下へ挿入の命令を実行。
>   合計の式を、入れる。
>  END IF
> END IF
>NEXT i
>
>以上、試してませんが、参考までに・・・

5280 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free