HohoPapa の回答履歴
- EXCEL2016の吹き出しについて
EXCEL2016を利用しています。 挿入できる図形の中に吹き出しがあります。 □に一箇所折れ点のある引き出し線が付いているタイプを利用しようと思っているのですが、以下のことを数値的にして出来る方法を探しています。 (1)□と引き出し点の間隔の指定 (2)引き出し線の角度の指定 http://kinako.sakura.ne.jp/archives/2005/03/word-1.html によると、以前のバージョンではかなり細かく指定が出来たようですが、新しいEXCELでは同じことは出来ないのでしょうか? よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- mao2004
- 回答数2
- 再質問 エクセルの表の列の最下行から指定数の・・
お世話になっております。 3日前にここでご回答いただいて解決したと思ったのですが、実シートで作業開始早々に不都合が出たので追加のHELPのお願いです。 各列の17行目以降に行方向にデータが入った表の下から30個のデータのMaxを求める関数のVBAを教わって早々に作業を開始したのですが、なぜか最下行を含まないVBAと、計算式の入った列では結果が「#VALUE!」となり、最下行を含むVBAの場合は、計算式の入った列の結果は「0」となってしまいます。 試しに別のシートで数値の列とその数値に定数をかけた列を作って試してみましたがうまく行きます。 また、対象のシートのセルの書式は数値になっています。 具体的な数式は =IF(F127="","",F127*5) というような単純な計算式で日付が入るような特殊な計算はやっていません。 項目 数値A 計算値A 数値B 数値B 数値C ------------------------------------------------------------------- 平均 1.1197 #VALUE! 46.6133 #VALUE! 44.6767 σ 0.0008 #VALUE! 2.5940 #VALUE! 0.2128 最小 1.117 0.000 42.100 0.000 44.300 最大 1.121 0.000 51.100 0.000 45.100 <最下行を含む場合> Function sfMax(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfMax = WorksheetFunction.Max(tgRng) End Function <最下行を副含まない場合> Function sfSTDEV(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then LastRow = LastRow - 1 StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfSTDEV = WorksheetFunction.StDev(tgRng) End Function
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数8
- 再質問 エクセルの表の列の最下行から指定数の・・
お世話になっております。 3日前にここでご回答いただいて解決したと思ったのですが、実シートで作業開始早々に不都合が出たので追加のHELPのお願いです。 各列の17行目以降に行方向にデータが入った表の下から30個のデータのMaxを求める関数のVBAを教わって早々に作業を開始したのですが、なぜか最下行を含まないVBAと、計算式の入った列では結果が「#VALUE!」となり、最下行を含むVBAの場合は、計算式の入った列の結果は「0」となってしまいます。 試しに別のシートで数値の列とその数値に定数をかけた列を作って試してみましたがうまく行きます。 また、対象のシートのセルの書式は数値になっています。 具体的な数式は =IF(F127="","",F127*5) というような単純な計算式で日付が入るような特殊な計算はやっていません。 項目 数値A 計算値A 数値B 数値B 数値C ------------------------------------------------------------------- 平均 1.1197 #VALUE! 46.6133 #VALUE! 44.6767 σ 0.0008 #VALUE! 2.5940 #VALUE! 0.2128 最小 1.117 0.000 42.100 0.000 44.300 最大 1.121 0.000 51.100 0.000 45.100 <最下行を含む場合> Function sfMax(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfMax = WorksheetFunction.Max(tgRng) End Function <最下行を副含まない場合> Function sfSTDEV(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then LastRow = LastRow - 1 StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfSTDEV = WorksheetFunction.StDev(tgRng) End Function
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数8
- 再質問 エクセルの表の列の最下行から指定数の・・
お世話になっております。 3日前にここでご回答いただいて解決したと思ったのですが、実シートで作業開始早々に不都合が出たので追加のHELPのお願いです。 各列の17行目以降に行方向にデータが入った表の下から30個のデータのMaxを求める関数のVBAを教わって早々に作業を開始したのですが、なぜか最下行を含まないVBAと、計算式の入った列では結果が「#VALUE!」となり、最下行を含むVBAの場合は、計算式の入った列の結果は「0」となってしまいます。 試しに別のシートで数値の列とその数値に定数をかけた列を作って試してみましたがうまく行きます。 また、対象のシートのセルの書式は数値になっています。 具体的な数式は =IF(F127="","",F127*5) というような単純な計算式で日付が入るような特殊な計算はやっていません。 項目 数値A 計算値A 数値B 数値B 数値C ------------------------------------------------------------------- 平均 1.1197 #VALUE! 46.6133 #VALUE! 44.6767 σ 0.0008 #VALUE! 2.5940 #VALUE! 0.2128 最小 1.117 0.000 42.100 0.000 44.300 最大 1.121 0.000 51.100 0.000 45.100 <最下行を含む場合> Function sfMax(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfMax = WorksheetFunction.Max(tgRng) End Function <最下行を副含まない場合> Function sfSTDEV(Rng As Range, Optional bd) As Double Dim LastRow As Long Dim MyCol As Long Dim tgRng As Range Dim Border As Long Dim StartRow As Long Const DefBorder = 30 StartRow = 17 'データ開始行 If IsMissing(bd) Then Border = DefBorder '省略された場合の閾値 Else If ((bd = 0) Or (bd = "")) Then Border = DefBorder '省略された場合の閾値 Else Border = bd End If End If MyCol = Rng.Column LastRow = Cells(Rows.Count, MyCol).End(xlUp).Row If LastRow > StartRow + Border - 1 Then LastRow = LastRow - 1 StartRow = LastRow - Border + 1 End If Set tgRng = Range(Cells(StartRow, MyCol), Cells(LastRow, MyCol)) sfSTDEV = WorksheetFunction.StDev(tgRng) End Function
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数8
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルの表の列の最下行から指定数のデータで
データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。
- ベストアンサー
- Excel(エクセル)
- akira0723
- 回答数13
- エクセルVBAでPDF保存ができません
エクセルのシートを連続してPDFで出力するVBAで困っています。 自分の端末内で動かす分にはぜんぜん問題はありません。ところが会社のサーバー内の共有フォルダーに保存して動かすと、最初の1件だけは正常にPDFに保存されますが、何度やっても2件目でエラーになりPDFが保存されません。 「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。」 となってしまうのです。 PDFが保存されないうちに次のPDFを作成して保存しているためかと思いApplication.Waitで10秒待つようにしたところ最後まで保存ができました。 しかし、自分の端末内ではWaitを入れなくとも問題なくできます。 質問は、この原因と、一律にApplication.Waitで10秒待たなくとも別の方法で対応する方法はないかということです。 よろしくお願いいたします。 Sub TEST01() '2020/10/10 Dim Fdr As String, Fn As String Dim n As Long With Sheets("Test") .Activate Fdr = ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "-PDF" 'PDF保存先' If Dir(Fdr, vbDirectory) = "" Then MkDir Fdr '無ければ作成 End If For n = 1 To 20 .Range("C5").Value = Sheets("Data").Cells(n, "A").Value Fn = .Range("C5").Value & "_" & .Range("D5").Value 'ファイル名 Application.StatusBar = Fn & " PDFファイル作成中/" & n & "件目" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fdr & "\" & Fn & ".pdf" Application.Wait Now() + TimeValue("00:00:10") '10秒PDF保存完了を待つ(1-8秒では保存エラー) Next n End With Application.StatusBar = "" End Sub
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数15
- エクセルVBAでPDF保存ができません
エクセルのシートを連続してPDFで出力するVBAで困っています。 自分の端末内で動かす分にはぜんぜん問題はありません。ところが会社のサーバー内の共有フォルダーに保存して動かすと、最初の1件だけは正常にPDFに保存されますが、何度やっても2件目でエラーになりPDFが保存されません。 「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。」 となってしまうのです。 PDFが保存されないうちに次のPDFを作成して保存しているためかと思いApplication.Waitで10秒待つようにしたところ最後まで保存ができました。 しかし、自分の端末内ではWaitを入れなくとも問題なくできます。 質問は、この原因と、一律にApplication.Waitで10秒待たなくとも別の方法で対応する方法はないかということです。 よろしくお願いいたします。 Sub TEST01() '2020/10/10 Dim Fdr As String, Fn As String Dim n As Long With Sheets("Test") .Activate Fdr = ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "-PDF" 'PDF保存先' If Dir(Fdr, vbDirectory) = "" Then MkDir Fdr '無ければ作成 End If For n = 1 To 20 .Range("C5").Value = Sheets("Data").Cells(n, "A").Value Fn = .Range("C5").Value & "_" & .Range("D5").Value 'ファイル名 Application.StatusBar = Fn & " PDFファイル作成中/" & n & "件目" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fdr & "\" & Fn & ".pdf" Application.Wait Now() + TimeValue("00:00:10") '10秒PDF保存完了を待つ(1-8秒では保存エラー) Next n End With Application.StatusBar = "" End Sub
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数15
- エクセルVBAでPDF保存ができません
エクセルのシートを連続してPDFで出力するVBAで困っています。 自分の端末内で動かす分にはぜんぜん問題はありません。ところが会社のサーバー内の共有フォルダーに保存して動かすと、最初の1件だけは正常にPDFに保存されますが、何度やっても2件目でエラーになりPDFが保存されません。 「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。」 となってしまうのです。 PDFが保存されないうちに次のPDFを作成して保存しているためかと思いApplication.Waitで10秒待つようにしたところ最後まで保存ができました。 しかし、自分の端末内ではWaitを入れなくとも問題なくできます。 質問は、この原因と、一律にApplication.Waitで10秒待たなくとも別の方法で対応する方法はないかということです。 よろしくお願いいたします。 Sub TEST01() '2020/10/10 Dim Fdr As String, Fn As String Dim n As Long With Sheets("Test") .Activate Fdr = ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "-PDF" 'PDF保存先' If Dir(Fdr, vbDirectory) = "" Then MkDir Fdr '無ければ作成 End If For n = 1 To 20 .Range("C5").Value = Sheets("Data").Cells(n, "A").Value Fn = .Range("C5").Value & "_" & .Range("D5").Value 'ファイル名 Application.StatusBar = Fn & " PDFファイル作成中/" & n & "件目" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fdr & "\" & Fn & ".pdf" Application.Wait Now() + TimeValue("00:00:10") '10秒PDF保存完了を待つ(1-8秒では保存エラー) Next n End With Application.StatusBar = "" End Sub
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数15
- エクセルVBAでPDF保存ができません
エクセルのシートを連続してPDFで出力するVBAで困っています。 自分の端末内で動かす分にはぜんぜん問題はありません。ところが会社のサーバー内の共有フォルダーに保存して動かすと、最初の1件だけは正常にPDFに保存されますが、何度やっても2件目でエラーになりPDFが保存されません。 「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。」 となってしまうのです。 PDFが保存されないうちに次のPDFを作成して保存しているためかと思いApplication.Waitで10秒待つようにしたところ最後まで保存ができました。 しかし、自分の端末内ではWaitを入れなくとも問題なくできます。 質問は、この原因と、一律にApplication.Waitで10秒待たなくとも別の方法で対応する方法はないかということです。 よろしくお願いいたします。 Sub TEST01() '2020/10/10 Dim Fdr As String, Fn As String Dim n As Long With Sheets("Test") .Activate Fdr = ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "-PDF" 'PDF保存先' If Dir(Fdr, vbDirectory) = "" Then MkDir Fdr '無ければ作成 End If For n = 1 To 20 .Range("C5").Value = Sheets("Data").Cells(n, "A").Value Fn = .Range("C5").Value & "_" & .Range("D5").Value 'ファイル名 Application.StatusBar = Fn & " PDFファイル作成中/" & n & "件目" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fdr & "\" & Fn & ".pdf" Application.Wait Now() + TimeValue("00:00:10") '10秒PDF保存完了を待つ(1-8秒では保存エラー) Next n End With Application.StatusBar = "" End Sub
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数15
- 値の検索方法
ExcelのVBAについて教えてください。 シートAとシートBがあり、内容は異なりますが同じ項目が設定されています。 シートAのA列の値に一致する値をシートBから検索し行の値を取得したいと思うのですが、シートAもシートBも0埋めされていたりされていなかったり値がばらばらです。 VBAでシートの値を変更せず検索して行情報を取得する方法はないでしょうか? Findとかフィルタでは検索先のシートの値を補正できなくて難しいのかなと思っているのですが可能なのでしょうか。 なお、行数がかなり多いのでシートBを上から一つずつ検索していく方法はなるべく避けたいです。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- guts1402
- 回答数7
- 値の検索方法
ExcelのVBAについて教えてください。 シートAとシートBがあり、内容は異なりますが同じ項目が設定されています。 シートAのA列の値に一致する値をシートBから検索し行の値を取得したいと思うのですが、シートAもシートBも0埋めされていたりされていなかったり値がばらばらです。 VBAでシートの値を変更せず検索して行情報を取得する方法はないでしょうか? Findとかフィルタでは検索先のシートの値を補正できなくて難しいのかなと思っているのですが可能なのでしょうか。 なお、行数がかなり多いのでシートBを上から一つずつ検索していく方法はなるべく避けたいです。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- guts1402
- 回答数7
- マクロの改ページの追加について。
下記コードに、E列を上から見て値が変わったら改ページ、を追加したいのですが、上手くできません。 A列、D列のみの下記コードでは成功します。 ちなみにE列は日付なんですが、A列D列同様にコードを書き足すだけではダメなんでしょうか?? 以前こちらで質問させて頂いて、回答を頂いたコードで、私自身完璧に内容を理解できていないので、追加の仕方もわからない状況です。 よろしくお願い致します。 Sub test() Dim rng As Range Dim objA As New Collection Dim objD As New Collection Dim strA As String Dim strD As String Dim blnBreak As Boolean ' 改ページを全て解除 Activesheet.ResetAllPageBreaks Activesheet.PageSetup.PrintArea ="$A:$K" For Each rng In Range("A:A") strA = CStr(rng.Value) strD = CStr(rng.Offset(0, 3).Value) ' コレクションに追加(同じデータはスキップする) On Error Resume Next objA.Add strA, strA objD.Add strD, strD On Error GoTo 0 If objA.Count = 2 Then ' A列の 2つ目のコレクションで改ページ blnBreak = True ' コレクションをリセット Set objA = New Collection Set objD = New Collection objA.Add strA, strA objD.Add strD, strD Else If objD.Count = 4 Then ' D列の 4つ目のコレクションで改ページ blnBreak = True ' コレクションをリセット Set objA = New Collection Set objD = New Collection objA.Add strA, strA objD.Add strD, strD Else blnBreak = False End If End If ' 改ページ挿入 If blnBreak Then Activesheet.HPageBreaks.Add rng End If Next End Sub
- ベストアンサー
- Visual Basic
- s1194
- 回答数5
- マクロの改ページの追加について。
下記コードに、E列を上から見て値が変わったら改ページ、を追加したいのですが、上手くできません。 A列、D列のみの下記コードでは成功します。 ちなみにE列は日付なんですが、A列D列同様にコードを書き足すだけではダメなんでしょうか?? 以前こちらで質問させて頂いて、回答を頂いたコードで、私自身完璧に内容を理解できていないので、追加の仕方もわからない状況です。 よろしくお願い致します。 Sub test() Dim rng As Range Dim objA As New Collection Dim objD As New Collection Dim strA As String Dim strD As String Dim blnBreak As Boolean ' 改ページを全て解除 Activesheet.ResetAllPageBreaks Activesheet.PageSetup.PrintArea ="$A:$K" For Each rng In Range("A:A") strA = CStr(rng.Value) strD = CStr(rng.Offset(0, 3).Value) ' コレクションに追加(同じデータはスキップする) On Error Resume Next objA.Add strA, strA objD.Add strD, strD On Error GoTo 0 If objA.Count = 2 Then ' A列の 2つ目のコレクションで改ページ blnBreak = True ' コレクションをリセット Set objA = New Collection Set objD = New Collection objA.Add strA, strA objD.Add strD, strD Else If objD.Count = 4 Then ' D列の 4つ目のコレクションで改ページ blnBreak = True ' コレクションをリセット Set objA = New Collection Set objD = New Collection objA.Add strA, strA objD.Add strD, strD Else blnBreak = False End If End If ' 改ページ挿入 If blnBreak Then Activesheet.HPageBreaks.Add rng End If Next End Sub
- ベストアンサー
- Visual Basic
- s1194
- 回答数5
- VBA セル内改行+他セルの文字をカット&ペースト
A1セル内文字の最後部分にカーソルを持っていって、Alt+Enterを押してA1セルを2行に改行する、 B1にある値をカットして、A1の改行した部分に貼り付け というマクロを作るべく、「マクロの記録」をしてみたところ、A1のテキストがそのままマクロに書き込まれてしまって応用ができないです。 改行部分に貼り付けするにはB1セルの値はコピーではなくカットが必要だと思いますが、これも「マクロの記録」だと動作ではなくテキストそのものが書き込まれてしまい、応用が効きません。 Sub A1改行カットペースト() ' ' A1改行カットペースト Macro ' ' ActiveCell.FormulaR1C1 = "RO20-001" & Chr(10) & "" Range("B1").Select ActiveCell.FormulaR1C1 = "" Range("A1").Select ActiveCell.FormulaR1C1 = "RO20-001" & Chr(10) & "8/7到着" Range("F4").Select End Sub "RO20-001"と"8/7到着"はA1とB1の値であって、この記述ではこのマクロをループさせた時、他の全部のセルに"RO20-001"と"8/7到着"が貼りついてしまいます。 改行やテキストのカット&ペーストの「動作」はどのように記述すれば良いのでしょうか? どなたかご存じの方がいらっしゃいましたら、教えて下さい。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- potetito
- 回答数4
- エクセルのピボットテーブルで前年比を集計する
エクセルのピボットテーブルでの前年比についてです。 元データに商品別の前年比の値が入っています。前年金額は入っていないです。 この元データをピボットテーブルにして、ブランド別の前年比を出したいです。集計する時に平均にしてしまうと間違った数字が出てしまうことは認識しております。どのように設定したら良いのか教えていただきたいです。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- noname#245403
- 回答数2