[[20170218135430]] 『反映するやり方を教えて下さい。』(まな) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『反映するやり方を教えて下さい。』(まな)

シート1の表に
C5 D5 E5
名前 出社時間 退勤時間
を作り、シート2に名前・出社時間・退勤時間をランダムに
入力したらシート1に反映させるやり方を
教え下さい。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


 最近、こういった表現の質問が少なくないのですが

 >シート2に名前・出社時間・退勤時間をランダムに 入力したら

 シート2の『どこに』『どのように』 入力するのですか? 
 入力場所は1か所で決まっているとか、どんどん各行に入力していく とか。

 >入力したらシート1に反映させる

 シート1の『どこに』『どのように』反映させるのですか?
 どんどん追加していくのですか? あるいは、1か所の特定の場所に転記するんですか?

 こういったことを、具体的にしっかりと説明してください。

 また、具体例として シート2の入力とシート1への反映がわかるサンプルレイアウトをアップすれば
 適切な回答が早くアップされると思いますよ。

(β) 2017/02/18(土) 14:12


 >まな さん
 説明が雑です。よくわかりません。

 >シート1の表に 
 >C5 D5 E5 
 >名前 出社時間 退勤時間 
 >を作り、

 タイトルを5行目に作成するということでしょうか?
 C5には、「名前」の文字列を入力
 D5には、「出勤時間」の文字列を入力
 E5には、「退勤時間」の文字列を入力
 ****************************************************
 >シート2に名前・出社時間・退勤時間をランダムに入力
 シート2のどのセルに、名前・出社時間・退勤時間を入力するので
 しょうか?ランダムとは、どのような状態をいっているのでしょうか?

 名前・出社時間・退勤時間それぞれを入力する列は決まってますか?
 名前・出社時間・退勤時間それぞれを入力する開始列は決まってますか?

 ************************************************************
 >入力したらシート1に反映させる
 どのように反映させたいのでしょうか?
 シート1のC列を名前、D列を出勤時間、E列を退勤時間
 として、データは、6行目以降に反映していきたいってことでしょうか?
 6行目のC,D,E列に既に、「山田太郎」「08:05」「19:20」
 と反映されていたら、次の行7行目に次のデータを反映させたいとか?

(マリオ) 2017/02/18(土) 14:14


 ほらね。掲示板変えても要求されることは同じですよ。
 あちらはマルチポスト禁止なのでこちらで続けるなら向こうを
 閉めて下さい。
(コナミ) 2017/02/18(土) 15:02

マリオさん。
向こうの掲示板がマルチポスト禁止とは知らなかったです。
削除できないので、向こうでは質問しません。
ご指摘ありがとうございます。
(まな) 2017/02/18(土) 15:5
**********************************
説明が雑すぎですみません。
シート1に月曜日〜日曜日までの表があり
 B4 月曜日             F4 火曜日
 C5「名前」の文字列      G5「名前」の文字列     
 D5「出勤時間」の文字列  H5「出勤時間」の文字列
 E5「退勤時間」の文字列  I5「退勤時間」の文字列
と日曜日までありそこに
シート2
A1 名前
B1 出勤時間
C1 退勤時間
D1 曜日

を入力したらシート1の曜日別表に6列目から
名前・出勤時間・退勤時間に反映をしたいのですが・・・


 マリオさんでなくて申し訳ない。

 向こうで閉じるっていうのは、ちゃんとよそに移動することを書いて
 便宜上解決済みにすることです。
 じゃないとただの放置でしょう?
(コナミ) 2017/02/18(土) 16:26

 向こうに、『別の掲示板に移動します』とコメントを入れて解決マークを付けておかれれば
 まな さんの印象度アップになります。

 多くの回答者さんたちは、あちらも学校も見ていますので。

( β) 2017/02/18(土) 16:32


お名前間違えてすみません。
いろいろご指摘ありがとうございます。

(まな) 2017/02/18(土) 16:50


 シート2の D1 に、どのような形で曜日を入れるのか不明ですが、土曜 とか 土曜日 とか 土 とか、とにかく
 入力された文字列の先頭を判定しています。

 標準モジュールに。(2/18 20:50 転記セル1つ多かったので修正)
 4項目入力後実行。(起動はマクロボタンが便利かも)

 Sub Sample()
    With Sheets("Sheet2")
        Dim d As String
        Dim n As Variant

        If WorksheetFunction.CountA(.Range("A1:D1")) <> 4 Then
            MsgBox "4項目すべて入力した上で実行してください"
            Exit Sub
        End If

        d = Left(.Range("D1").Value, 1)
        n = Application.Find(d, "月火水木金土日")
        If IsError(n) Then
            MsgBox "曜日を正しく入力してください"
            Exit Sub
        End If

        n = (n - 1) * 4 + 3     'セット列

        .Range("A1:C1").Copy Sheets("Sheet1").Cells(Rows.Count, n).End(xlUp).Offset(1)
    End With
 End Sub

( β) 2017/02/18(土) 18:58


 向こうでは一般機能での質問でしたが、あるデータを、別シートに【追加していく】ということは
 少なくとも、関数では不可能だと思います。

 なので、マクロ案をアップしましたが、それでよかったでしょうか?

( β) 2017/02/18(土) 19:04


 本当にこれが「やりたいこと」なのかはわかりませんが、
 説明されていることを力技で書いてみました。他の先生方と違い美しくないやり方です。

 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
 Dim d As Byte   '書き出し列の指定用変数,D4に応じて変更
 Dim r As Long   '書き出し行の指定用変数 

 If Sheets("Sheet2").Range("D1").Value = "月曜日" Then        'Sheet2のD1が月曜日なら
  d = 3                                                       '書き出し列はC列
 ElseIf Sheets("Sheet2").Range("D1").Value = "火曜日" Then    'Sheet2のD1が火曜日なら
  d = 7                                                       '書き出し列はG列
 ElseIf Sheets("Sheet2").Range("D1").Value = "水曜日" Then
  d = 11
 ElseIf Sheets("Sheet2").Range("D1").Value = "木曜日" Then
  d = 15
 ElseIf Sheets("Sheet2").Range("D1").Value = "金曜日" Then
  d = 19
 ElseIf Sheets("Sheet2").Range("D1").Value = "土曜日" Then
  d = 23
 ElseIf Sheets("Sheet2").Range("D1").Value = "日曜日" Then
  d = 27
 Else
  MsgBox "曜日が間違っています"
  Exit Sub
 End If

 r = Sheets("Sheet1").Cells(Rows.Count, d).End(xlUp).Row + 1 '書き出し行を取得

    Sheets("Sheet2").Range("A1:C1").Copy                    'Sheet2のA1からC1範囲をコピー
    Sheets("Sheet1").Select                                 'Sheet1の
    Cells(r, d).Select                                      'r行,d列を選択
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False                                                           '貼り付け
 End Sub

(tata) 2017/02/18(土) 19:12


βさんがすでに美しいものをご提示済みでした。
私の回答は無視して下さい。
(tata) 2017/02/18(土) 19:13

 こんばんわ。

 >シート2
 >A1 名前
 >B1 出勤時間
 >C1 退勤時間
 >D1 曜日
 >を入力したらシート1の曜日別表に6列目から 

 回答者の皆さんはシート2のA1〜D1セルに手入力されたデータをシート1に反映させると思ってますが、本当に1行目に入力するんですか?
 質問者さんだけが入力するなら、A1〜D1にどの項目を入力するかは分かるかも知れませんが、他の人が入力するなら分からないんじゃ無いですか?
 皆さんから指摘あるように、レイアウトがあれば誤解する事も無いのでレイアウトを提示するように心掛けて下さい。

 何れにしても、2行目に入力されたものを振り分けるとかでは無いですか?
 後、入力は1行だけですか?
 複数行に入力されたデータをそれぞれ振り分けるような事は無いですか?

 質問する時はそう言う事も提示しないと、望む結果は得られないですよ。

(sy) 2017/02/18(土) 22:12


ちなみに最初の質問を見て

 >シート1の表に 
 >C5 D5 E5 
 >名前 出社時間 退勤時間 
 >を作り、シート2に名前・出社時間・退勤時間をランダムに 
 >入力したらシート1に反映させるやり方を 
 >教え下さい。 

 シート1のC5に
 =Sheet2!C5 と入力して下さい
 シート1のD5に
 =Sheet2!D5 と入力して下さい
 シート1のE5に
 =Sheet2!E5 と入力して下さい

 シート2のC5に
 =CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122)) と入力して下さい
 ↑ランダムな4文字の名前を入力する関数

 シート2のD5とE5に
 =TEXT(RAND(),"h:mm") と入力して下さい
 ↑ランダムな時刻を入力する関数

というのを考えたのですが、いかがでしょうか。要件満たしていますでしょうか(微笑)
(tata) 2017/02/18(土) 22:51


 To まな さん

 >マリオさん。 
 >向こうの掲示板がマルチポスト禁止とは知らなかったです。 

 人違いかな?向こうの掲示板って何処?

 **************************************
 シート2では、A1 名前、B1 出勤時間、C1 退勤時間、D1 曜日
 を入力とありますが、★日付の入力欄がないですね。
 例えば、曜日が月曜日として…、いつの月曜日なんでしょうか?
 日付がないと、データの重複入力に気づけないですよ。

 例えば、
 シート2(データを入力するシート)
 A2 日付
 B2 名前
 C2 出勤時間
 D2 退勤時間
 E2 曜日
 なんてのは、どうでしょうか?1行目はタイトルを入れておく。

 syさんとかぶりますが、
 入力は、この場合ですと2行目だけ(1行分だけ)ですか?
 複数行分(例えば、2行目〜23行目など、行数は不確定)を
 シート2に入力して、そのデータをシート1(データ集約シート)
 の各曜日に振り分けるような事は無いですか?
 1日に、何回ぐらい使用するのかもイメージできません。

 勝手なイメージですが、事務職の方が、
 複数の社員のタイムカード(1か月分の記録、両面印刷の厚紙)
 を管理していて、その各タイムカードの名前、日付、出勤時間、退勤時間
 を見ながら、エクセルにデータを打ち込んでいくイメージ。
 そんな感じですかね?

 **************************************
 このコードを使用するのは、管理者1人ですか?
 それとも、複数の人が自分の名前等を入力して使用するのですか?
 その場合、何人ぐらいの人が使用するのですかね?
 多数が使用するなら、シート1が、用意に変更されないように、工夫しないといけないと思いますが…。

 **************************************
 βさんの「( β) 2017/02/18(土) 18:58 のコード」は、まな さんの希望通りの出来で、素晴らしいですね(^^♪
 まなさん自身で、何点か気づかれる点が出てくると思いますが…。
(マリオ) 2017/02/19(日) 01:57

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.