こんにちは!
ご教授いただきたく質問させていただきます。
それぞれ個人のデータが入っている個人表(2行7列)が載っているシートが複数枚あります。その平均を同じシートの個人表の下に作成してある同じ形式の平均表(2行7列)と個人シート(複数枚)と同じつくりにしてある集計シートの平均表に入れたいのです。
今現在は平均表の左上のセル【個人シート(全員分)と集計シートを選択】して個人表の左上セルを串刺し、平均を出しオートフィルで平均表を作成しています。自分一人で集計する時は問題ないのですが他多数の人が行う際に関数入力間違いや参照間違いの発生が危惧されます。マクロでできればそのようなミスが起こらないと思いますが、マクロを作ることが出来ません。ご教授お願いします。

A 回答 (5件)

以下のマクロを標準モジュールに登録してください。


集計表より右側のシートは、関知しません。
集計表の平均の表が、各個人の平均の表にコピーされます。
集計表の平均の表の書式設定を適切に行ってください。それらも含めて、各個人のシートに反映されます。
--------------------------------------------------------------
Option Explicit
Public Sub 平均()
Const tName As String = "集計表"
Dim row, col, i As Long
Dim ws, wt As Worksheet
Dim sheet_last, sheet_count As Long
Dim val As Variant
Set wt = Worksheets(tName)
sheet_last = 0
sheet_count = 0
For i = 2 To Worksheets.Count
If Worksheets(i).Name = tName Then
sheet_last = i - 1
Exit For
End If
sheet_count = sheet_count + 1
Next
If sheet_count = 0 Then
MsgBox ("シート不足")
Exit Sub
End If
'集計シートクリア
wt.Range("B5:I6").Value = ""
wt.Range("B8:I9").Value = ""
'全ての個人シートを加算
For i = 2 To sheet_last
Worksheets(i).Activate
For row = 5 To 6
For col = 2 To 9
wt.Cells(row, col) = wt.Cells(row, col) + Cells(row, col).Value
Next col
Next row
Next i
'平均を求める
For row = 5 To 6
For col = 2 To 9
wt.Cells(row + 3, col).Value = wt.Cells(row, col).Value / sheet_count
Next col
Next row
'全ての個人シートへ平均をコピー
For i = 2 To sheet_last
Worksheets(i).Activate
wt.Range("B8:I9").Copy Range("B8:I9")
Next i
MsgBox ("完了")
End Sub
-------------------------------------------
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございました。
自分が実施したいことが、すべて実施出来ました。
大変ありがとうございます。これで作業がミスなく迅速に実施出来ます。
本当に感謝の言葉しか出てきません。
ありがとうございました。
間違いなくベストアンサーです。

お礼日時:2017/06/16 13:50

>1.集計用シートは個人シートの右になりますが、今現在その右にその集計シートのデータを参照する表(グラフ等も】のシートが2シートつけてありますが、そのシートがある事が問題ならば集計シートにまとめることは可能です。



では、集計用シートのシート名を提示ください。シート名が、提示されたXXXになった時点で、個人シートが終わったと判断します。その為には、XXXの具体的な値を提示してください。

>6.空欄はありません。すべて数値(時間も)です。
B5:I6の中に、時間も含まれているのですか。
マクロでは、どこが時間なのかわからないので、単純に数値を加算し、その平均をとりますがそれで良いですか。
    • good
    • 0
この回答へのお礼

早急なご回答ありがとうございます。
集計用シートのシート名は【集計表】にしています。時間については数値平均で全く問題ありません。
以上になります。
よろしくお願いいたします。

お礼日時:2017/06/16 10:59

補足要求です。


1.集計用シートは、一番右側のシートであってますか。
2.個人用シートは、左から2番目のシートから開始し、集計用シートの手前で終了ですか。
3.集計用シートのB5:I6は、個人シートの合計値が設定されれば良いのですか。
4.集計用シートのB8:I9は、B5:I6の平均が設定されれば良いですか。
5.個人用シートのB8:I9は、集計用シートのB8:I9と同じ内容になりますか。
6.個人用シートのB5:I6は、空欄(データなし)もありますか。また、空欄があった場合は、それはデータ件数に含めませんが、それで良いですか。
例えば、個人シートが10枚あって、個人1のB8=10、個人2のB8=20、他の個人のB8=空欄の場合、
合計は30ですが、平均は30÷2=15になります。(30÷10=3ではありません)
    • good
    • 0
この回答へのお礼

おはようございます。回答していただきありがとうございます。
質問内容が分かりづらくてお手数おかけいたします。補足要求に答えさせていただきます。
1.集計用シートは個人シートの右になりますが、今現在その右にその集計シートのデータを参照する表(グラフ等も】のシートが2シートつけてありますが、そのシートがある事が問題ならば集計シートにまとめることは可能です。
2.その通りです。
3.集計用シートのB5:I6は特に使用していなかったので合計値でも問題ありません。
4.その通りです。
5.その通りです。
6.空欄はありません。すべて数値(時間も)です。
以上になります。
ご回答よろしくお願いいたします。

お礼日時:2017/06/16 07:34

名簿用シートの直後(一つ右)に「ここから」シートを挿入


集計用シートの直前(一つ左)に「ここまで」シートを挿入
串刺し計算は =SUM(ここから:ここまで!B4) のようにしておく
ただし、「ここから」シートと「ここまで」シートの位置が逆転すると数式が壊れます
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
№1回答していただいたところに補足させていただきましたが、やはりマクロは無理なのでしょうか?
入力ミスによる参照間違い等が出そうで心配なため、マクロでと考えました。ありがとうございました。

お礼日時:2017/06/14 21:04

こんにちは



内容がよく理解できていない上に、直接の回答ではありませんが・・・

>マクロを作ることが出来ません。
>他多数の人が行う際に関数入力間違いや参照間違いの発生が危惧されます。
マクロでもできるでしょうけれど、メンテも何もできなくなるだけではないでしょうか?

同じ計算をさせるだけだのように思われますので、ひな形のブックなりシートを作成しておいてそれを使い回せば良いだけのように思えますが?
計算式を入れてある部分を上書きで壊されないようにしたければ、シートの保護などでそのセルを保護しておけば良いでしょう。

その時々で違う計算をさせたいと言う場合は、マクロでも対応できるのかどうか不明です。(規則性があれば可能だと思いますが)

いずれにしろ、ご質問の情報の内容だけでは、回答者にマクロを作成することはできませんね。(情報が不足しすぎ、というより、ほとんどありませんので)
    • good
    • 0
この回答へのお礼

早速回答していただき、ありがとうございます。
質問が解りづらく申し訳ありません。補足させていただきます。
一つのブックに一番前には名簿用シートがありその後ろから№1から№10等(個人データ)人数分のシートがあります。(その時によって人数が変わります。)また、その後ろに集計用のシートを付けてあります。集計用のシートは個人データ用と同じ内容(同じセルに同じ表が作ってあります。)のシートです。各シートのB列からI列迄8列の5行、6行の2行に個人の細かなデータ(数値)が入っています。各シートのB列からI列迄8列の8行、9行の2行に平均用の表が作ってあります。個人データの表のそれぞれの平均を平均用の表にまとめたいのです。(それぞれ個人シートのB5セルの平均を全てのシートのB8セルに)その個人データと平均データを参照してグラフ化するようになっています。個人個人が自分のデータと平均を比較できるようになっています。一番後ろの集計用シートはその平均データ参照して個人用とは違うグラフや表になるように作ってあります。毎回人数が違うので同じ式をひな形で作っておくことが出来ず、人数(シート枚数)が変わっても出来るマクロがあればと思い、質問させていただきました。前回名簿から名簿人数分名前を入力するマクロをご教授いただいたので、人数が変わってもマクロなら出来るのかと思い、お願いしました。よろしくお願いいたします。

お礼日時:2017/06/14 18:35

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセル 数式を教えてください!

エクセルの数式を教えてください!

エクセルでタイムカードを作成しているのですが、休憩時間が2枠ある場合(①通常時間帯②深夜時間帯)の各時間(拘束時間・労働時間・日勤時間・通常残業・深夜
時間・深夜残業)の算出数式が分かりません。

画像のように、休憩時間は①通常時間帯と②深夜時間帯(22:00~5:00)の2枠あり、それぞれ合計時間を数値で入力します。
各時間帯の休憩時間がそれぞれ、
・拘束時間・労働時間・日勤時間・通常残業・深夜時間・深夜残業に反映させるようにしたいのですが、休憩が2枠あるため数式がうまくいきません。。

深夜帯(深夜時間・深夜残業)は22:00~5:00で、1日の労働時間が8時間を超えた場合に残業となります。

画像のように、【拘束時間・労働時間・日勤時間・通常残業・深夜時間・深夜残業】に適切な数値(出勤退勤はh:mmで入力し、その他は15分=0.25単位の数値)で計算されるようにしたいです!

賢者の皆様、どうか宜しくお願い致します!

Aベストアンサー

ANo3です。

>15分を0.25と数値で計算させる方法がわからないので
シリアル値は1日が1.0となるように計算しています。

シリアル値の時間をTとするなら
 =HOUR(T)+MINUTE(T)/60
とすることで、時間単位(15分は0.25時間)に該当する値を得られます。
例えば、3:15 → 3.25 となります。

上記の1日=1.0(1日=24時間)を利用すれば、もっと簡単に
 =T*24
とすることでも、同様の結果を得ることができます。

※どちらの場合も、表示書式は「数値」や「標準」としておく必要があります。

Qマクロで消去したいです

たびたび同じ質問をしてしまい申し訳ありません
以前教えてもらった
Sub Sample()

Dim c As Range, cbx As Object
Dim rw As Long
Dim t As Single, h As Single, w As Single
Dim y As Single, v As Boolean, f As Boolean

For rw = 6 To 15
Set c = Cells(rw, 1)
t = c.Top
h = t + c.Height
w = c.Width
f = False

' Form Control
For Each cbx In ActiveSheet.CheckBoxes
y = cbx.Top + cbx.Height / 2
If t < y And y < h And cbx.Left < w Then
f = True
If cbx.Value = xlOn Then v = True Else v = False
Exit For
End If
Next cbx

' ActiveX Control
If Not f Then
For Each cbx In ActiveSheet.OLEObjects
If TypeName(cbx.Object) = "CheckBox" Then
y = cbx.Top + cbx.Height / 2
If t < y And y < h And cbx.Left < w Then
f = True
v = cbx.Object.Value
Exit For
End If
End If
Next cbx
End If

If f And v Then
Cells(rw, 3).Resize(, 3).ClearContents
Cells(rw, 16).Resize(, 2).ClearContents
End If
Next rw

End Sub
でシート「操作画面」のC13:E13,P13:Q13 C15:E15,P15:Q15は消去することができました
それを応用して別シート「集計」のI7:I12 K7:K12も合わせて消去しようかと思ったのですが上手く
動作しませんでした

大変申し訳ないのですが、また、ご指導のほどよろしくお願いいたします

たびたび同じ質問をしてしまい申し訳ありません
以前教えてもらった
Sub Sample()

Dim c As Range, cbx As Object
Dim rw As Long
Dim t As Single, h As Single, w As Single
Dim y As Single, v As Boolean, f As Boolean

For rw = 6 To 15
Set c = Cells(rw, 1)
t = c.Top
h = t + c.Height
w = c.Width
f = False

' Form Control
For Each cbx In ActiveSheet.CheckBoxes
y = cbx.Top + cbx.Height / 2
If t < y And y < h And cbx.Left < w Then
f ...続きを読む

Aベストアンサー

前回回答者です。

最初に、前回の説明と重複になってしまいますが・・・
https://oshiete.goo.ne.jp/qa/9807697.html

説明にもありますように、通常はセルとチェックボックスの関係をきちんと取れるようにしておいてから、マクロを作成するものと思います。
その意味において、前回のNo1様、No3様の回答は関係性を確かなものにする方法を提示なさっています。

No2の回答は、それらの情報が与えられないので、しかたなく見た目から推測する方法で処理したものですので、正確性や効率性の点であまり良いものとは言えません。
また、チェックボックスも複数の種類が想定でき、どちらなのかが不明でしたので、両方を考慮しましたが、実際には(常識的に)どちらか一方だけの利用であると推測できますので、結果的に残り半分のコードは不要ということになります。
さらに、きちんと関係性が取れている場合は、位置関係から探す必要もなくなるので、コードも大幅に短くできるはずですが、不明な状況でしたので、ひとまず冗長なコードであっても提示しておけば、後は、質問者様がアレンジなさるであろうことを期待しての回答でした。


今回のご質問で、
・それを応用して~~
・〇〇も合わせて消去しようかと~
・上手く動作しませんでした
「応用する」、「うまく動作しない」という情報だけから推理しようとしても、あまりにも可能性が広がりすぎてしまって皆目見当がつきません。

多少なりともヒントになりそうな情報として記せそうなのは、前回の回答で「セルの内容を消去している」部分は
> Cells(rw, 3).Resize(, 3).ClearContents
> Cells(rw, 16).Resize(, 2).ClearContents
の2行である、ということぐらいでしょうか。
(この部分に関しては、前回のNo3様と、たまたま同様の記述になっています)
ANo3様のコードの方が、シートを明記する形式で対象を指定していますので、より明確な記述方法になっていると言えるかもしれません。

ちなみに
>別シート「集計」のI7:I12 K7:K12を消去する
という部分だけであれば、
 Worksheets("集計").Range("I7:I12,K7:K12").ClearContents
のような記述で実現できるはずと思います。

前回回答者です。

最初に、前回の説明と重複になってしまいますが・・・
https://oshiete.goo.ne.jp/qa/9807697.html

説明にもありますように、通常はセルとチェックボックスの関係をきちんと取れるようにしておいてから、マクロを作成するものと思います。
その意味において、前回のNo1様、No3様の回答は関係性を確かなものにする方法を提示なさっています。

No2の回答は、それらの情報が与えられないので、しかたなく見た目から推測する方法で処理したものですので、正確性や効率性の点であまり良いものとは...続きを読む

Qエクセルで処理者の工程別に降順となっている件数表で、F氏の成績表を作成したい場合のランク表示について

処理者の工程別に降順となっている件数表で、Fさんの成績表を作成したい場合のランク表示について。各工程の平均と比較して達成、未達は表示できたのですが、ランクの行に(Aトップ、A、Bトップ、B、Cトップ、C、Dトップ、D)と表示させたいのですが、下のIF関数ではFALSEとなってしまいました。具体的には上位5位迄をA、6位~15位迄をB、16位~30位迄をC、31位~40位迄をDとし、さらに各ランクのトップを表示し、できれば各件数を条件付き書式でAランク~Dランクまで色を変えて表示させたいのですが、わかりづらくてすみません。関数初心者ですRANK関数等を使うのでしょうか?なるべく詳しく教えてください。実際には20工程×40人ほどになります。よろしくお願いいたします。

Aベストアンサー

ANo1です

>一人の行を色づけしてから全列を降順で並べ替えていますので、
並べ替えちゃうと、その人のデータもバラバラになるだけでなく、他の人のデータは何が何だかわからない状態になってしまうのではないでしょうか?

>(どの工程が得意とか分析しやすいように)
???
そのためにランク分けをしたり、添付の図で下部に個人のランクを表示しようとなさっているのではないのでしょうか?


実際になさりたいことや目的がよくわかっていませんが、何となくの雰囲気で異なる種類の成績を総合的に表示したいのかと推測しました。
評価方法そのものは、その内容によってデータの扱いはいろいろのはずなので、内容がわかりませんので、そのままのデータを用いるものとしていますが、とりあえず「ランク分けで評価」、「個人評価を総合したい」ということだと想像しています。
一例として、下部の個人部分に(添付図でFと記されている部分」に名前を入れると、各工程のランクが表示され、チャートに示されるという仕組みを考えてみました。

一枚に詰め込んでみましたが、添付の図のB24セルに名前を入力すると、該当する人の各ランク及びそれをチャート化したものが表示されます。
仕組みはANo1で示したものと同じですが、表示データに連動してチャート図が描かれるようにしてあります。

※ 当たるも八卦ですが、何かのご参考にでもなれば。

ANo1です

>一人の行を色づけしてから全列を降順で並べ替えていますので、
並べ替えちゃうと、その人のデータもバラバラになるだけでなく、他の人のデータは何が何だかわからない状態になってしまうのではないでしょうか?

>(どの工程が得意とか分析しやすいように)
???
そのためにランク分けをしたり、添付の図で下部に個人のランクを表示しようとなさっているのではないのでしょうか?


実際になさりたいことや目的がよくわかっていませんが、何となくの雰囲気で異なる種類の成績を総合的に表示したいの...続きを読む

Qエクセルの式がわかりません、教えてください。

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かったら)
この事例はあり得ませんので削除

もし、$AP$7="○" ○で(請求書が弊社宛)
('!$AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)金額的には100%
もし、$AP$7="○" ○で(請求書が弊社宛)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
A =$V$19(業務報酬)金額的には50%

を選ばせようとしています。

疑問点の $AT$7=(支払金額)は上記の式に関係ないものとして削除しました。

以下の文書では、もし、$AP$7="×"(請求書が弊社宛ではなくて)で $AT$7=""(支払金額の記載が無かったら)A=$V$19(業務報酬)

もし、$AP$7="○"(請求書が弊社宛で)、,NOT($AL$7==""(下請会社名の記載が有ったら)、A=$V$19(業務報酬)
そうでなければ、B=$V$18(預り金)

=IF(AND($AP$7="×",$AT$7=””),$V$19,IF(OR($AP$7="○",NOT($AL$7="")),'$V$19,$V$18))

改善策1として
=IF($AP$7="×",$V$18,$V$19)を入れてみましたが、
もし請求書が弊社宛では無ければ、預り金、そうでなければ業務報酬

もし、$AP$7="○" ○で(請求書が弊社宛)
($AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)
がうまくいきません。


改善策2として
=IF(OR($AP$7="○",NOT($AL$7="")),$V$18,$V$19)で作成しましたが、間違っていました。
(請求書が弊社宛)または(下請会社名の記載が有ったら)、業務報酬、そうでなければ預り金


パターン例
請求書が弊社宛 請求書が弊社宛じゃない
下請会社有 業務報酬 預り金
下請会社無 業務報酬 -

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かった...続きを読む

Aベストアンサー

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)   …【式1】

これで、条件①~④の場合の処理は完了。

■APが「×」の場合
結果が「業務報酬」と「預り金」のどちらかになります。
どの条件で結果が分岐するのか、見てみると・・・

AYに金額の記入があるか、無い(空欄)かで違います。

これを、IF関数を使って表すと以下のようになります。

=IF(AY<>"","業務報酬","預り金")   …【式2】

これで、条件⑤~⑧の場合の処理は完了。

■合体!

(式1)と(式2)を合体させると、条件①~⑧全てを処理できる式になります。
ではやってみましょう。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)
   ↓
=IF(AP="○","業務報酬",【式2】)
   ↓
=IF(AP="○","業務報酬",IF(AY<>"","業務報酬","預り金"))   …完成!

※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。


■疑問
あくまで、私が画像から読み取った条件で考えたのですが

AL(業者名の有無)については、結果表示させるにあたり、条件として不要だと思います。

条件④と条件①の違いは?(画像で判別不可)

条件④と条件⑧は無いパターンとのことでしたので、
データミスでも存在しえないないものと解釈しまして、
敢えてそのようなケースが合った場合のエラー処理などは含めていません。

---------------------
★別解
添付した表を前提条件としての別解を。

条件がいくつもあっても、結果が「預り金」となるパターンは条件⑦、ただ1つのみ。

そこだけをIFで判別します。

=IF(AND(AP="×",AY=""),"預り金","業務報酬")

こんなにシンプルになります。
※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります...続きを読む

Qマクロを使って指定箇所の文字の消去はできますか?

A6:A15のチェックボックスにチェックを入れボタンをクリックすると指定位置の文字を消去することは可能でしょうか?
A13のチェックだったらC13:E13,P13:Q13 A15のチェックだったらC15:E15,P15:Q15
両方チェックだったらC13:E13,P13:Q13、C15:E15,P15:Q15を消去という具合に行いたいのですが
どのようにすればよいでしょうか?

ご指導のほどよろしくお願いします。

Aベストアンサー

こんにちは

チェックボックスは、セルと独立した関係にあるので、どのチェックボックスがどの行にあるのか決められてはいません。
通常は、チェックボックスのチェック状態をセルと連動させておいて、それを参照して利用すると思います。
この方法であれば、ご質問の内容は関数でも実現できそうに思われます。

また、チェックボックスと一口に言っても、フォームコントロールのチェックボックスとActiveXのものと2種類あって、VBAでの扱いが微妙に変わります。
そのあたりの情報が何もないので、見た目の位置関係から調べるという少々回りくどい方法で処理してみました。
(普通は、上述のようにセルとの連動を利用すると思います)

Sub Sample()

Dim c As Range, cbx As Object
Dim rw As Long
Dim t As Single, h As Single, w As Single
Dim y As Single, v As Boolean, f As Boolean

For rw = 6 To 15
 Set c = Cells(rw, 1)
 t = c.Top
 h = t + c.Height
 w = c.Width
 f = False

 ' Form Control
 For Each cbx In ActiveSheet.CheckBoxes
  y = cbx.Top + cbx.Height / 2
  If t < y And y < h And cbx.Left < w Then
   f = True
   If cbx.Value = xlOn Then v = True Else v = False
   Exit For
  End If
 Next cbx

 ' ActiveX Control
 If Not f Then
  For Each cbx In ActiveSheet.OLEObjects
   If TypeName(cbx.Object) = "CheckBox" Then
    y = cbx.Top + cbx.Height / 2
    If t < y And y < h And cbx.Left < w Then
     f = True
     v = cbx.Object.Value
     Exit For
    End If
   End If
  Next cbx
 End If

 If f And v Then
  Cells(rw, 3).Resize(, 3).ClearContents
  Cells(rw, 16).Resize(, 2).ClearContents
 End If
Next rw

End Sub

こんにちは

チェックボックスは、セルと独立した関係にあるので、どのチェックボックスがどの行にあるのか決められてはいません。
通常は、チェックボックスのチェック状態をセルと連動させておいて、それを参照して利用すると思います。
この方法であれば、ご質問の内容は関数でも実現できそうに思われます。

また、チェックボックスと一口に言っても、フォームコントロールのチェックボックスとActiveXのものと2種類あって、VBAでの扱いが微妙に変わります。
そのあたりの情報が何もないので、見た目の位置関...続きを読む

Q他のブックのシートを今のブックの末尾にコピーしたいのですが、VBAを教えてください。

いつもお世話になります。
皆様にご教授いただき、ほぼ理想に近づいてきました。
今回ご教授いただきたいのは、作業中のブックの末尾に他のブックから4シートまとめてコピーして張り付けたいのです。現在は手作業で行っています。
作業中のブックは20シート位でその時によってシート数は変化します。sheet1のシート名は"シート一覧"、sheet2~sheet20位のシート名は”名簿””№”~"№(18)"位で一番末尾のシート名は"Sheet3"となっています。コピー元のブック名は”集計表”で4シートあり左から”集計表”、”表”、”表②”、”グラフ”のシート名です。”集計表”シートにデータが入るとその右の3シートのグラフや表が出来上がるようになっています。1シートずつ移動させると表やグラフがエラー表示となってしまうため、4シートまとめて移動したいのです。
いろいろやってみたのですが、うまくいきません。
上記の作業中のブックももともとはすべて1シートからなるブックを【エクセルアテンダント】というソフトで1ブックにまとめたものですが、ソフトを使用せず、VBAで上記作業とあわせてまとめることが出来るのであれば、その方がベストです。まとめることが出来るのであれば、”名簿”シートが先頭で”№”~”№()”の後ろに上記4シートにしたいのですが。まとめる前のブック名は”名簿”ブックの”名簿”シートと”診断書01”~”診断書18”(その時によって数は変化します)という名前のブックで1シートで出来ています。シート名はsすべて”№”です。この数あるブックをソフトでまとめると一番前に”シート一覧”というシートが、一番後ろに”Sheet3”というシートがついた、任意の名前のブックが出来上がるのです。ソフトを立ち上げたり移動したりと手間がかかることと、一度ファイル形式をxlsxからxlsに変換しないと1ブックにまとめることが出来ないのことがネックとなっています。
すべてデスクトップ上にありますが、同じフォルダにまとめることは可能です。
あわせて、ご教授いただければ、非常に助かります。
よろしくお願いいたします。

いつもお世話になります。
皆様にご教授いただき、ほぼ理想に近づいてきました。
今回ご教授いただきたいのは、作業中のブックの末尾に他のブックから4シートまとめてコピーして張り付けたいのです。現在は手作業で行っています。
作業中のブックは20シート位でその時によってシート数は変化します。sheet1のシート名は"シート一覧"、sheet2~sheet20位のシート名は”名簿””№”~"№(18)"位で一番末尾のシート名は"Sheet3"となっています。コピー元のブック名は”集計表”で4シートあり左から”集計表”、”表”、”表...続きを読む

Aベストアンサー

ANo2です

>(インデックスが有効範囲にありません)
このエラーは、ブック名やシート名が見つからない時に出ます。
具体的には、
Workbooks("コピー元.xlsx")や
Worksheets(Array("SheetA", "SheetB", "SheetC")が見つからない時です。

提示しましたコードは、単純にシートをコピーするだけのものですので、両方のブック(コピー元、コピー先)が開いた状態であることが前提です。
ブックが閉じた状態で実行した場合も、該当するブックが見当たらないので、上記のエラーになります。
ブックが閉じた状態から実行するには、その前にブックを開く処理が必要になります。

Qエクセル トラブル

ノートPCで昨日まで使えていたエクセル(Word等のoffice製品すべて)が使えなくなりました。。
エクセルを立ち上げようとしたら、
【C:Program Files(x86)\Microsoft Office\root\Office16\AppVlsvSubsystems32.dllはWindows上では実行できないか、エラーを含んでいます。元のインストールメディアを使用して再インストールするか、システム管理者またはソフトウェアの製造元に問い合わせてください。エラー状態0xc0000020。】
とポップが表示されます。

これはどういう状態でどういうエラーなのでしょうか?
また使えるようにするためには何をしたらよいでしょうか?
毎日エクセルを使うので大変困っています。。
よろしくお願いいたします。

Aベストアンサー

以下はお試しになりましたか?
https://support.office.com/ja-jp/article/%E3%82%A8%E3%83%A9%E3%83%BC-%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AB-AppVIsvSubsystems32-dll-%E3%81%8C%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93-3e8e09b6-5500-41df-9497-e0fc3e3d781c

Qエクセル 日付けと曜日

病院なんかで お薬をもらってまた次回 来院するのですが、たとえば、一週間単位で次回も主治医のいる火曜日にという特定の曜日にしたい場合、14日分、28日分、56日分などとするのはいいのですが、19日分などとしてお薬なくなったから来ましたとして曜日が合わない場合困ります。19日の前の直近の火曜日はいつの日日(ひにち)かをエクセルで表すのにはどうすればいいのでしょうか。

Aベストアンサー

コメントいただいた内容を反映して修正しました。

[B1]に受診日を入力します。

[B2]に処方された薬の日数を入力します。

[B3]は薬がなくなる日を計算します。式は以下の通り
=B1+B2

[B4]は薬が無くなる前の火曜日に当たる日を計算します。
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1),-7,0)

日付の右に曜日を表示しています。
[C1]
=B1
と式を入れ、
C1セルで、右クリック→ セルの書式設定 → 表示形式
右にあるユーザ書式のところに「aaa」と入力してok
これで曜日が表示されます。
C1セルをC3、C4セルにコピー貼り付けすると、
薬のなくなる日、次回受診日の曜日も表示されます。

次回受診日について、
たとえば【7/13に14日分処方】されると、きっちり2週間後の【7/27】という結果になりますが、
きっちりなくなる日ではなく余裕を持って1週間前【7/20】にしたい場合は、
[B4]
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1)+1,-7,0)
と、式の最後の方に「+1」を加えてください。
画像にある2行目の式で、後ろのほうの赤い字の部分です。
(画像がぼやけてますが、場所は確認できますよね?)

お試しください。

コメントいただいた内容を反映して修正しました。

[B1]に受診日を入力します。

[B2]に処方された薬の日数を入力します。

[B3]は薬がなくなる日を計算します。式は以下の通り
=B1+B2

[B4]は薬が無くなる前の火曜日に当たる日を計算します。
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1),-7,0)

日付の右に曜日を表示しています。
[C1]
=B1
と式を入れ、
C1セルで、右クリック→ セルの書式設定 → 表示形式
右にあるユーザ書式のところに「aaa」と入力してok
これで曜日が表示されます。
C1セルを...続きを読む

Q関数について教えてください、参照した番号に属する内容を抽出して表にしたい。

はじめまして。
データシートから表を作りたいと思っているのですが、
エクセルが苦手でして、ご教授願いたいです。

シート1のA列にはID番号があり、B以降の列にはそれぞれサイズが入っています。
ID番号によってそれぞれ違う項目に内容が入っているのですが、
それをシート2でID番号を入力したらID番号に属するものだけまとまった表に生成したいと思っています。

やりたいこと
・シート1にデータが入りシート2でID番号によって表を生成
・シート2に参照するID番号を入力
・参照したID番号(同じ番号数分)の行にあるものだけを抽出して並べる(空セルは除外)
・抽出したセル(内容)の一番上にある項目名(1の行)を抽出

使用エクセル:Excel Mac 2011
宜しくお願いいたします。

Aベストアンサー

No.2です。

配列数式はPCにかなりの負担を掛けます。
列全体とか広い範囲を対象範囲としてしまうと計算速度が極端に落ちますので、
とりあえず対象範囲はSheet1のA1~Z1000の範囲としてみました。

Sheet2のA1セル(配列数式です)に
=IFERROR(INDEX(Sheet1!$B1:$Z1,SMALL(IF(OFFSET(Sheet1!$B1:$Z1,MATCH($A$7,Sheet1!$A1:$A1000,0)-1,,1)<>"",COLUMN($B1:$Z1)-1),COLUMN(A1))),"")

としてフィルハンドルで右へずぃ~~~!っとコピー!

A2セル(同様に配列数式です)に
=IFERROR(INDEX(Sheet1!$B$1:$Z$1000,SMALL(IF(Sheet1!$A$1:$A$1000=$A$7,ROW($A$1:$A$1000)),ROW(A1)),MATCH(A$1,Sheet1!$B$1:$Z$1,0)),"")

として列・行方向にフィルハンドルでコピーしてみてください。

こんな感じではどうでしょうか?m(_ _)m

No.2です。

配列数式はPCにかなりの負担を掛けます。
列全体とか広い範囲を対象範囲としてしまうと計算速度が極端に落ちますので、
とりあえず対象範囲はSheet1のA1~Z1000の範囲としてみました。

Sheet2のA1セル(配列数式です)に
=IFERROR(INDEX(Sheet1!$B1:$Z1,SMALL(IF(OFFSET(Sheet1!$B1:$Z1,MATCH($A$7,Sheet1!$A1:$A1000,0)-1,,1)<>"",COLUMN($B1:$Z1)-1),COLUMN(A1))),"")

としてフィルハンドルで右へずぃ~~~!っとコピー!

A2セル(同様に配列数式です)に
=IFERROR(INDEX(Sheet1!$B$1:$Z$1000,S...続きを読む

QMSの“小さな親切、余計なお世話”

Excel 2013 を使用しています。
添付図上段において、セル F1 に(赤矢印の先に)何やら表示されているアイコン、セル内に入力された文字列を隠しています。其処にマウスポインタを乗せると[挿入オプション]と表示され、当該アイコンの右端に現れたナビスコマークをクリックすると、添付図下段に示すメニューが。

この邪魔臭いアイコンを隠す(永久に表示されなくする)ための設定手順を教えてください。
ちなみに、このアイコンはどういう場合に表示されるようになっているのでしょうか?

Aベストアンサー

2016のオプション画像で申し訳ない。

「コンテンツを貼り付けるときに[貼り付けオプション]ボタンを表示する」
このチェックを外す。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報