重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excelで困っています。

担当者ごとに連絡先や所属、担当業務を管理しているシート①があります。
別シート②で、担当者をリストで選択した時に、その担当者の業務を一覧表示し、
さらにその業務の達成率を手打ち入力し、達成率が0でない業務のみが印刷されるようにしたいです。

【現状】下記の例のようにしています。
【問題1】少ない行でしたら問題ないのですが、C行の列番号を1行ごとに打ち替える必要が有るため、行数が増加していくとトラブルの種になりそうで実用化に至っていません。
【問題2】シート②ではA,B列のみを印刷用にし、C,D列を非印刷入力用セルにしていますが、非印刷列を使わずに構成できると助かります
【問題3】現状では0を入力した業務の行が空白で表示され、空白行がところどころ印刷されます。これを印刷せず、上に詰めるようにしたいです。

※シート①については社内共通のフォーマットなので形式の変更ができません。

基本的にシステムは私のみが編集可能であれば良いので、多少煩わしい方法でも印刷が綺麗であれば構いません。
アドバイスお願いします。

======以下例=======

★シート①
A1=担当者名|B1=連絡先|C1=所属|D1=業務1|E1=業務2|F1=業務3
A2=担当者(1)|B2=080-000-0000|C2=営業1課|D2=業務A|E2=業務B|F2=業務C・・・
A3=担当者(2)|B3=080-000-1111|C3=営業2課|D3=業務D|E3=業務E|F3=業務F・・・



★シート②(印刷用シート)
リストで担当者を選択
⇒担当している業務のみを一覧表示
⇒さらに業務ごとに達成率を手入力
⇒0を入力した業務は印刷しない

※A、B列のみ印刷表示、A~C列は保護、利用者はA1リスト選択およびD列3行以降のみ手入力可能

△画面表示△
A1=担当者(1)
A2=080-000-0000|B2=営業1課
A3= (空白)|B3= (空白)|C3=業務A|D3=0(手入力セル)
A4=業務B|B4=50%|C4=業務B|D4=50(手入力セル)
A5=業務C|B5=100%|C5=業務C|D5=100(手入力セル)

△数式△
A1=リスト選択(シート①担当者名)
A2=vlookup(A1,シート①!A:G,2,0)|B2=vlookup(A1,シート①!A:G,3,0)
A3=if(C3>0,C3," ")|B3=IF(D3>0,D3&"%"," ")|C3=vlookup(A1,シート①!A:F,4,0)|D3=手入力セル
A4=if(C4>0,C4," ")|B4=IF(D4>0,D4&"%"," ")|C4=vlookup(A1,シート①!A:F,5,0)|D4=手入力セル
A5=if(C5>0,C5," ")|B3=IF(D5>0,D5&"%"," ")|C5=vlookup(A1,シート①!A:F,6,0)|D5=手入力セル

A 回答 (4件)

問い合わせの文面を見て、Sample-008.xlsxを作成しました。


ご参考になれば幸いです。

アクセスはこちら  http://1drv.ms/1EWME8N
    • good
    • 0

質問とは関係ありませんが、幾つかアドバイス


一つ目
>A3=if(C3>0,C3," ")|B3=IF(D3>0,D3&"%"," ")|C3=vlookup(A1,シート①!A:F,4,0)
業務1、業務2、業務3は文字ですよね。
C3=vlookup(A1,シート①!A:F,4,0)

C3=vlookup(A1,シート①!A:F,4,0)&””
としてみて下さい。空白の時に0ではなく、空白が表示されます。

A3=if(C3>0,C3," ")

A3=C3&""
で済むでしょう。

B3=IF(D3>0,D3&"%"," ")

B3=D3
として、B列の表示形式=>ユーザー定義で
0%;;
とすれば、0或いはマイナスは表示されず
プラスの場合に %が付く

となると
A3=vlookup(A1,シート①!A:F,4,0)&””
B列の表示形式=>ユーザー定義で 0%;; として手入力すれば
2列で済みそう。

ふたつめ
3行目に
   A    B 
3 業務内容 進捗率
と項目名を入れる
オートフィルターで、進捗率で 0以上に絞り込めば
不要な部分は表示されなくなりますよね。

三つ目
①のシートもデータの持ち方がおかしいと思います。
業務は、必ず3つなのか
その業務が業務が終了した記録は残さなくても良いのか
参考までに
私だったら
 A   B    C    D   E   F  G
登録日 作業内容 担当者 部署名 電話 進捗率 終了日
として、ひたすら発生した業務を記録し続けて
終了日が空白の行を別シートに表示させる方が正しいと思います。
或いは
オートフィルターで非表示にする。
これで、目的の管理が出来ると思います。

作業が1日内で終わるようでしたら、作業開始時間、終了時間となりますが。


是非、思い切って会社に提案してみてください。
社内共通フォーマットですので、改善すれば大きな効果が期待できますよ。
    • good
    • 0

VBAの力を借りてよければ


Sub ボタン1_Click()
For i = 1 To Range("D" & Rows.Count).End(xlUp).Row
If Range("D" & i).Value = 0 Then
Rows(i).EntireRow.Hidden = True
End If
Next
End Sub

D列の値が 0 の行を非表示にするVBAです。
この後に、AB列の印刷後
非表示の解除を実行すれば、ボタンをクリックするだけで
印刷までが終了しますが如何でしょうか。
    • good
    • 0

ソートなどフィルタ機能を使って必要な項目を含む行をまとめて表示させてそれをコピー。


コピーしたら新しいシートへ貼り付け。
基本的に並べ替えれば問題は起きにくくなります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!