HohoPapa の回答履歴
- Excelの関数について
エクセルの関数を教えてください。 画像を元にやりたいことを説明させていただきます。 Sheet1のA列の時間がSheet2のA列の時間と一致した場合、 Sheet2のB~E列をSheet1のB~E列に表示させるようにしたいです。 一致しない場合は空白にしたいです。 よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- reityanlove0710
- 回答数7
- グラフに横棒を引きたい(追加質問2)
いつもお世話になっております。 本当にお恥ずかしい話ですが、先ほど回答いただき「完璧!」と思ったのですが実際のシートに適用してみたら明らかな不具合が発覚してしまいました。 動作確認した時には3本の線がきれいに描かれ、データ数を変えてもちゃんと対応したので「OK」と早とちりしBSで締め切ったのですが、添付図の通り目的データを式のままコピーしてくるので特性データが0を這います。 動作確認時には一番下の線(値0の線)がー3σの線だと思ったのですが、特性データでした。(感動してグラフの数値を確認しませんでした) 対象データの列を値としてB列に貼り付ける必要がありました。 (実際の表ではE列*0.5です) 何ともお恥ずかしい限りですが ここまで来たら諦めきれず・・・・ 恥も外聞もなくすがります。 全く急ぎませんので何卒・・・
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数1
- グラフに横棒を引きたい(追加質問)
いつもお世話になっております。 12/13に下記のご回答をいただいて複数のBookに展開し始めたのですが、どうしても追加の機能が必要なケースがあることに気付いたので追加のお願いです。 これができないと展開できるBook、対象列が限られてしまい非常に勿体無いので、これだけは何としても解決したく追加の質問させていただきます。 尚、実Bookに展開するにあたり、「グラフ」は半角に、グラフ確認用のシートのA~D列に保護解除のコードを修正、追加しています。 急ぎませんので何とか宜しくお願い致します。 <必須機能> 【対象とする列の最下行(1048576行目)から上方向に1行ずつチェックして数値、あるいは計算結果が数値になっている最初のセルにしたい】です。 Sub グラフ確認() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 2 '横(項目)軸ラベル列番号 Const LineDataRow1 = 6 'プラス3σ行位置 Const LineDataRow2 = 7 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DShj As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If Sheets("グラフ確認用").Select Columns("A:D").Select ActiveSheet.Unprotect Sheets("グラフ").Select KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数1
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- マクロ・VBAでの書類作成
業務進捗書類作成で困っております。 再度お助けいただけないでしょうか。 〈内容〉 (1)セル I10の週頭(月曜日)の年月を変更したら自動的にその後の週頭(月曜日)が自動的に変更される。 (2) (1)を実行すると月によって隔週(月曜日)の数が違うため、結合されている年月末報告と月度合計が月によってズレてしまう為、月の週頭の数に合わせて結合する。 (3) (1)を実行すると月度合計のMAX範囲も月によってズレてしまう為、月の隔週(月曜日)の数に合わせて計算範囲が変更される。 (4)セル I9などの末報告の年月のみが自動的に変更されるマクロの作成。 〈追記〉 ・画像には表が全部入らない為、列がA~U(19年6月末報告~19年8月末報告)からBI~BZ(20年6月末報告~20年9月末報告)に飛んでおりますが、V~BH(19年9月末報告~20年5月末報告)の表が続いております。 ・表の範囲はセルB9からセルBZ34となっております。 ・末報告の年月は16カ月分です。 ・別の表で作成して頂いたコードを一応貼り付けておきますので宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sdate As Date, wdate As Date Dim c As Integer Dim i As Integer, j As Integer Dim buf As String If Target.Address <> "$C$3" Then Exit Sub Application.EnableEvents = False '結合、計算式クリア Range("C2:Q2,D3:Q3,C4:Q11").Value = "" Range("C2:Q2,C5:Q5,C7:Q7,C9:Q9,C11:Q11").UnMerge Range("B2:Q11").Borders.LineStyle = False sdate = Target.Value i = 1 c = 3 Do wdate = sdate + i * 7 '月が替わたら結合と計算式 If Month(Cells(3, c)) <> Month(wdate) Then Cells(2, c).Value = Format(wdate - 7, "yy年m月") & "末報告" With Range(Cells(2, c), Cells(2, 3 + i - 1)) .Merge .HorizontalAlignment = xlCenter End With For j = 5 To 11 Step 2 '"=MAX(C4:F4)" buf = "=MAX(" & Chr(64 + c) & j - 1 & ":" & Chr(64 + c + i - 1) & j - 1 & ")" Cells(j, c).Formula = buf With Range(Cells(j, c), Cells(j, 3 + i - 1)) .Merge .HorizontalAlignment = xlCenter End With Next j If wdate >= DateSerial(Year(sdate), Month(sdate) + 3, 1) Then Exit Do c = 3 + i End If Cells(3, i + 3) = wdate Cells(3, i + 3).NumberFormatLocal = "m月d日" i = i + 1 Loop '罫線 Range(Cells(2, 2), Cells(11, Cells(3, Columns.Count).End(xlToLeft).Column)).Borders.LineStyle = True Application.EnableEvents = True End Sub
- 締切済み
- Excel(エクセル)
- namaeyuki3738
- 回答数2
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- グラフに横棒を引きたい(再質問)
いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 3 '横(項目)軸ラベル列番号 Const LineDataRow1 = 11 'プラス3σ行位置 Const LineDataRow2 = 12 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DSh As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数6
- エクセルに挿入した図に連番を付けたいのですが
エクセルに絵として挿入した地図上で、クリックした位置に連番(1~100)のテキストボックスを挿入したいのですが、またフォントや大きさも変えることができればうれしいのですが、教えていただけるでしょうか。
- 締切済み
- Excel(エクセル)
- Jmasa0123
- 回答数2
- エクセルの折れ線グラフについて
いつもお世話になります。 実は添付図のような折れ線グラフを作りたいと考えています。 これは可能か否か。 当方、エクセル初心者、所有はエクセル2010です。 作成したい背景。 現在、不明熱という状態にあり「薬剤熱」の疑いあり。 医師からは出来るだけ熱の記録を付けて欲しいと要請がありました。 時間的に就寝時は体温測定が出来ませんので、記録表には空白が生じます。 エクセルを熟知されている方々からのご回答が欲しい。 出来なければ「それは無理です」だけでもかまいません。
- ベストアンサー
- Excel(エクセル)
- mimazoku_2
- 回答数6
- エクセルで勤怠・作業管理
こんばんは、是非お力をお貸しくださいませ。 添付ファイルのように、エクセルでワークスケジュールを作成し、始業から終業まで条件付けで色付けまではできあがりました。 例えばマウスで N4からP4 までドラッグして、そこに B9:B12 の内容をドロップリストで複数のセルに一度に入力できないものでしょうか?(色含め) マクロを使用して、ということなのでしょうが、調べても答えに行きつくことはできませんでした。 大変恐縮ですが、ご教授頂けますと幸いです。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- may-yonezu
- 回答数3
- マクロの処理速度が遅い コピペ→削除→名前付保存
マクロの処理速度が遅いため、大変困っています。お忙しいところ恐縮ですが、アドバイスいただけませんでしょうか。よろしくお願い致します。 作業は、30行×54列のデータの、コピペ→削除(ここまで4~5秒)→名前を付けて保存(トータル9~10秒)です。 30行はテストで、本当は500~1000行のデータを処理したいのですが、とても時間がかかり、PCが動かなくなってしまうこともあります。 ご指摘、いろいろあるかと思うのですが、細かな点でも教えてください。どうぞよろしくお願い致します。 詳細は、 元ファイルの"シート(1)”のデータ(●行×54列)を ファイル(原紙)を開き、ファイル(原紙)の"貼り付け”のシートに貼り付けます。 元ファイルの"シート(1)”のデータ(●行×54列)は、元ファイルの"シート(2)”に移動します。 元ファイルの"シート(1)”のデータ(●行×54列)を削除します。 ファイル(原紙)に、日付ー■(通し番号)をつけて、保存します。 ■は、保存先フォルダを確認し、通し番号にしています。 元ファイルは、他のシートにもいろいろデータがあり、7MBほどです。 時間測定の部分は、本番では不要です。 Sub test5() Dim startTime As Double Dim endTime As Double Dim processTime As Double '開始時間取得 startTime = Timer Dim s1 As Worksheet Set s1 = ActiveSheet Dim nPasteRow As Double Dim sHozon As String Dim sFilename As String '画面描画を静止 Application.ScreenUpdating = False '自動再計算の停止 Application.Calculation = xlManual '警告メッセージを非表示 Application.DisplayAlerts = False '***************************************** ' 元ファイルのシート(1) から ファイル.xls へ移動 '***************************************** 'ファイルを開く Workbooks.Open "C:\Users\yyy\OneDrive\デスクトップ\フォルダー\ファイル.xls" Sheets("貼り付け").Select Set wbData = ActiveWorkbook '最終行へ移動 If Range("A5").Value = "" Then nPasteRow = 5 ElseIf Range("A6").Value = "" Then nPasteRow = 6 Else nPasteRow = Range("A5").End(xlDown).Row + 1 End If Dim i As Long Dim m As Long For i = 5 To s1.Range("A4").End(xlDown).Row For m = 1 To 54 wbData.Sheets("貼り付け").Cells(nPasteRow + i - 5, m).Value = s1.Cells(i, m).Value Next m Next i '*************************** ' 元ファイルのシート(1) から シート(2)へ移動 '*************************** Workbooks("元ファイル.xlsm").Activate Dim s2 As Worksheet Set s2 = ActiveSheet '最終行へ移動 If Range("A3").Value = "" Then nPasteRow = 3 ElseIf Range("A4").Value = "" Then nPasteRow = 4 Else nPasteRow = Range("A3").End(xlDown).Row + 1 End If Dim n As Long Dim o As Long For n = 5 To s1.Range("A4").End(xlDown).Row For o = 1 To 54 s2.Cells(nPasteRow + n - 5, o).Value = s1.Cells(n, o).Value Next o Next n '***************** ' 移動した行削除 '***************** Sheets("シート(1)").Rows("5:" & Range("A4").End(xlDown).Row).Delete ActiveWorkbook.Save '******************** ' 行削除後の処理 '******************** Dim str1 As String Dim str2 As String Dim nCnt As Integer 'ファイルを開いた場合、名前をつけて保存を行う Workbooks("ファイル.xls").Activate '保存場所を指定 sHozon = "C:\Users\yyy\OneDrive\デスクトップ\フォルダー" For nCnt = 1 To 20 'ファイル名を設定 sFilename = "ファイル" & Replace(Date, "/", "") & "-" & nCnt & ".xls" Range("D2").Value = "ファイル" & Replace(Date, "/", "") & "-" & nCnt 'ファイルが存在しているか確認 str1 = sHozon & "\" & sFilename str2 = Dir(str1) If (str2 <> sFilename) Then 'ファイルが存在しない場合、保存 '名前をつけて保存 ActiveWorkbook.SaveAs Filename:= _ sHozon & "\" & sFilename, _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Sheets("処理(1)").Select Application.Goto Reference:=Range("E1"), Scroll:=True Exit For End If Next '自動再計算の再開 Application.Calculation = xlAutomatic '画面描画を開始 Application.ScreenUpdating = True '警告メッセージを表示 Application.DisplayAlerts = True '終了時間取得 endTime = Timer '処理時間表示 processTime = endTime - startTime MsgBox "処理時間:" & processTime End Sub
- 締切済み
- Excel(エクセル)
- kometoshi555
- 回答数5
- エクセルのリンク先のフルパスをコピペしたい
先日ここでファイルのフルパスをVBAで探しに行くコードを教えてもらって使い始めたのですが、すでに張ってあるハイパリンクのフルパスをコピーして隣のセルにVBAで貼り付けたく。 一応マクロの記録で試してみて下記の3行でうまく行くのですがこれをループにできません。 宜しくお願いします。 リンクの張ってあるセルはE列でフルパスを貼り付けたいセルは隣のF列です。 尚、対象セルは現在1500個程度ですが逐次増えるので、もし範囲指定しないと非常に時間がかかるようなら10000個(行)でお願いします。 原則空白行は無いのですが,リンクが切れていたり、リンク先のファイルが無いケースは存在します。 Sub リンクのコピペ() Range("E8").Select ActiveSheet.PasteSpecial Format:="Unicode テキスト", Link:=False, _ DisplayAsIcon:=False, NoHTMLFormatting:=True End Sub
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数1
- マクロ「pdfでメール添付」の方法を教えてください
マクロで、「ファイルをpdfにしてアウトルックに添付」というボタンを作りたいのですが、 方法を教えてください。 マクロで「pdfで共有」というのを記録してみたのですが、なぜかエクセルファイルのまま添付されてしまいます。 全くマクロに詳しくないので、初心者向けに分かりやすく教えていただけるとありがたいです。
- ベストアンサー
- Excel(エクセル)
- ORION33333
- 回答数2
- exelで一番初めに出てきたひらがな単語抽出方法
exelで各行にあるひらがなと他の文字が混じったテキストの中から全行含めて一番初め、一番左側に出てきたひらがな単語だけ一括で抽出しあいている列に表示する方法を教えて下さい ひらがな単語はひらがなのあとにひらがな以外の文字が続くところより前の部分と判断したい
- ベストアンサー
- Excel(エクセル)
- nakanakaokwave
- 回答数6
- 行の並び順の影響を受けない方法 2
図は入出金管理のための【テーブル】です。 ・集金月は文字データであり2020年01月~2020月12月などとする ・当月分データをG,H,Iに打ち込む ・残高Jが計算される ・翌月になったら当月分の約300行をコピーし、当月の下に貼り付け、集金月を翌月度に変更する ・翌月の最前行の前月残高の欄に=J3などと数式を入れると最後尾まで数式が入る ・月に1-2件は行の増減がある ※作業のため当月または翌月の行を並べ替えると翌月度の前月残高が狂う(当然) ※の問題を起こさないためには、画像の2020年10月の各物件の各番号と11月の各物件の番号が「固くリンク(一意)」することです。 そのためにF列に入る数式を教えて下さい。 今まで紙による管理でしたが、PCでの管理に移行するべく試行錯誤しております。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- lock_on
- 回答数8
- 行の並び順の影響を受けない方法 2
図は入出金管理のための【テーブル】です。 ・集金月は文字データであり2020年01月~2020月12月などとする ・当月分データをG,H,Iに打ち込む ・残高Jが計算される ・翌月になったら当月分の約300行をコピーし、当月の下に貼り付け、集金月を翌月度に変更する ・翌月の最前行の前月残高の欄に=J3などと数式を入れると最後尾まで数式が入る ・月に1-2件は行の増減がある ※作業のため当月または翌月の行を並べ替えると翌月度の前月残高が狂う(当然) ※の問題を起こさないためには、画像の2020年10月の各物件の各番号と11月の各物件の番号が「固くリンク(一意)」することです。 そのためにF列に入る数式を教えて下さい。 今まで紙による管理でしたが、PCでの管理に移行するべく試行錯誤しております。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- lock_on
- 回答数8
- 行の並び順の影響を受けない方法 2
図は入出金管理のための【テーブル】です。 ・集金月は文字データであり2020年01月~2020月12月などとする ・当月分データをG,H,Iに打ち込む ・残高Jが計算される ・翌月になったら当月分の約300行をコピーし、当月の下に貼り付け、集金月を翌月度に変更する ・翌月の最前行の前月残高の欄に=J3などと数式を入れると最後尾まで数式が入る ・月に1-2件は行の増減がある ※作業のため当月または翌月の行を並べ替えると翌月度の前月残高が狂う(当然) ※の問題を起こさないためには、画像の2020年10月の各物件の各番号と11月の各物件の番号が「固くリンク(一意)」することです。 そのためにF列に入る数式を教えて下さい。 今まで紙による管理でしたが、PCでの管理に移行するべく試行錯誤しております。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- lock_on
- 回答数8