HohoPapa の回答履歴
- Excelのフィルタの自動反映
閲覧ありがとうございます。 表題の通り、Excelのフィルタでデータを抽出したいのですが、 元データを更新すれば自動で抽出データも更新されるようにすることはできますでしょうか。 以下に現状行っていることを記載いたします。 ソフト:JUSTの表ソフト 現状:抽出用シートのフィルタ>詳細設定より、 リスト範囲:元データのシート 条件:抽出データのシート上部に羅列して複数条件付け 抽出範囲:抽出データのシートの4行目以降に抽出 としています。 やりたいこと:元データのシートを更新したら上記のフィルタが自動反映されるようにしたい 元データの更新は、別のデータからコピペで貼る方法しかありません。現状、更新したいときはフィルタをかけなおしています。 お分かりの方がいらっしゃれば教えていただければ幸いです。 また、詳しくないためもしマクロなどになるなら詳しく教えていただければありがたいです。。
- ベストアンサー
- Excel(エクセル)
- Englandv
- 回答数4
- VBA フィルター後に重複を1件としてカウントした
VBA初心者です。 Sheet1にリスト、Sheet2にボタンなどを配置し、Sheet1のリストにフィルターをして、その結果の中の重複分を1件としてカウントして、合計で何件あるのかというものを作りたいと思っています。 Sub 計算() Worksheets("sheet1").Range("A1").AutoFilter Field:=10,Criteria1:=Worksheets("sheet2").Range("C3").Value Count = WorksheetFunction.Subtotal(3,Range("j2:j577")) n = WorksheetFunction.Subtotal(3,Range("j2:j577")) Application.Evaluate("=SUMPRODUCT(1/COUNTIF(C1:C577,C1:C577))") Worksheets("sheet2").Range("E3").Value = n & "件" Worksheets("sheet2").Select End Sub というような感じで作ってみましたが、重複を1件として数えず全件の件数が出てしまいます。 初心者なのでいろいろ不備はあるかと思いますが、どのように直せばよろしいか、どうか教えていただけますようよろしくおねがいいたします。
- ベストアンサー
- Excel(エクセル)
- Alexa1021
- 回答数3
- VBA フィルター後に重複を1件としてカウントした
VBA初心者です。 Sheet1にリスト、Sheet2にボタンなどを配置し、Sheet1のリストにフィルターをして、その結果の中の重複分を1件としてカウントして、合計で何件あるのかというものを作りたいと思っています。 Sub 計算() Worksheets("sheet1").Range("A1").AutoFilter Field:=10,Criteria1:=Worksheets("sheet2").Range("C3").Value Count = WorksheetFunction.Subtotal(3,Range("j2:j577")) n = WorksheetFunction.Subtotal(3,Range("j2:j577")) Application.Evaluate("=SUMPRODUCT(1/COUNTIF(C1:C577,C1:C577))") Worksheets("sheet2").Range("E3").Value = n & "件" Worksheets("sheet2").Select End Sub というような感じで作ってみましたが、重複を1件として数えず全件の件数が出てしまいます。 初心者なのでいろいろ不備はあるかと思いますが、どのように直せばよろしいか、どうか教えていただけますようよろしくおねがいいたします。
- ベストアンサー
- Excel(エクセル)
- Alexa1021
- 回答数3
- ActiveXコントロールのオプションボタン
エクセルでユーザーフォームにActiveXコントロールのオプションボタンを設置してあります。このすべてのオプションボタンをいっぺんにオフにするにはVBAをどのように書いたらよいでしょうか? For~Nextでひとつづつ.Value = Falseにする方法はわかりますが、全部を一度にFalseにする虫のいい方法をご教示いただければ幸いです。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- emaxemax
- 回答数5
- 各セルの一番最初から3番目までの値の塊だけを置換
ああああああ があって あ を い に普通に置換すると いいいいいいい になりますが各セルの一番最初から3番目までの値の塊だけを置換し置換し 検索文字あ 置換文字いの時 結果は いいいあああ にしたいです 検索文字を一つの値の塊とします ああうえお があって 検索文字え 置換文字 空白 の時 え は4番目の値の塊なので ああうえお はそのまま変化なく置換したくありません 文字別に文字数を数えるというのではなくセル内で 一番左 から何番目に出てくるという基準で指定した値の塊を置換したいです 値の塊は一文字とは限りません あああああい を検索文字 ああああ 置換文字 い の時 結果は いあい にしたいです この時はああああが一つの値の塊です この時検索文字 ああ 置換文字 い のとき 結果いいあい 検索文字あ 置換文字い のとき結果は いいいああい 検索文字を一つの値の塊とします こういうことがA列の60000行のセルにできる式、マクロを教えてください 一つの値だけでなく複数の値を同時に検索し置換できるほうが良いです
- 締切済み
- Excel(エクセル)
- nakanakaokwave
- 回答数8
- 各セルの一番最初から3番目までの値の塊だけを置換
ああああああ があって あ を い に普通に置換すると いいいいいいい になりますが各セルの一番最初から3番目までの値の塊だけを置換し置換し 検索文字あ 置換文字いの時 結果は いいいあああ にしたいです 検索文字を一つの値の塊とします ああうえお があって 検索文字え 置換文字 空白 の時 え は4番目の値の塊なので ああうえお はそのまま変化なく置換したくありません 文字別に文字数を数えるというのではなくセル内で 一番左 から何番目に出てくるという基準で指定した値の塊を置換したいです 値の塊は一文字とは限りません あああああい を検索文字 ああああ 置換文字 い の時 結果は いあい にしたいです この時はああああが一つの値の塊です この時検索文字 ああ 置換文字 い のとき 結果いいあい 検索文字あ 置換文字い のとき結果は いいいああい 検索文字を一つの値の塊とします こういうことがA列の60000行のセルにできる式、マクロを教えてください 一つの値だけでなく複数の値を同時に検索し置換できるほうが良いです
- 締切済み
- Excel(エクセル)
- nakanakaokwave
- 回答数8
- 各セルの一番最初から3番目までの値の塊だけを置換
ああああああ があって あ を い に普通に置換すると いいいいいいい になりますが各セルの一番最初から3番目までの値の塊だけを置換し置換し 検索文字あ 置換文字いの時 結果は いいいあああ にしたいです 検索文字を一つの値の塊とします ああうえお があって 検索文字え 置換文字 空白 の時 え は4番目の値の塊なので ああうえお はそのまま変化なく置換したくありません 文字別に文字数を数えるというのではなくセル内で 一番左 から何番目に出てくるという基準で指定した値の塊を置換したいです 値の塊は一文字とは限りません あああああい を検索文字 ああああ 置換文字 い の時 結果は いあい にしたいです この時はああああが一つの値の塊です この時検索文字 ああ 置換文字 い のとき 結果いいあい 検索文字あ 置換文字い のとき結果は いいいああい 検索文字を一つの値の塊とします こういうことがA列の60000行のセルにできる式、マクロを教えてください 一つの値だけでなく複数の値を同時に検索し置換できるほうが良いです
- 締切済み
- Excel(エクセル)
- nakanakaokwave
- 回答数8
- 複数の括弧を中の値も含めて一括で削除する式、マクロ
エクセルA列60000行の値で(*),「*」,[*],{*},<*> ,【*】,『*』,〔*〕,<<*>>の複数の括弧を中の値も含めて一括で削除する式、マクロを教えてください
- 締切済み
- Excel(エクセル)
- nakanakaokwave
- 回答数7
- 複数の括弧を中の値も含めて一括で削除する式、マクロ
エクセルA列60000行の値で(*),「*」,[*],{*},<*> ,【*】,『*』,〔*〕,<<*>>の複数の括弧を中の値も含めて一括で削除する式、マクロを教えてください
- 締切済み
- Excel(エクセル)
- nakanakaokwave
- 回答数7
- VBAでIEで開いたダイアログのオブジェクトの操作
VBAでIE(Edge)上のWebページのエディットボックスやボタンを操作するには、 ie(COMオブジェクト)を取得して、 For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "txtDenpyoNo" Then obj.Value = d_no Exit For End If Next For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "btnSearch" Then obj.Click Exit For End If Next というような感じで、 エディットボックスに値を入れたり取得したり ボタンをクリックしたりする仕方は分かりましたが、 サイト上のボタンをクリックすると、 別のウインドウやダイアログが表示されることがあります。 このような場合、HTMLコードがないため、 上記の方法では記述することができません。 新しいウインドウやダイアログのタイトルから、 IDは取得することはできましたが、この取得したIDで、 ウインドウやダイアログをアクティブにするには、 どのように記述すればよいのでしょうか。 また、ウインドウやダイアログ上のオブジェクトの 指定の仕方がよく分からないのですが、 ウインドウやダイアログ上のオブジェクトを操作するには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。(Windows10,IE,Edge)
- 締切済み
- HTML
- ID_20150222
- 回答数3
- VBAでIEで開いたダイアログのオブジェクトの操作
VBAでIE(Edge)上のWebページのエディットボックスやボタンを操作するには、 ie(COMオブジェクト)を取得して、 For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "txtDenpyoNo" Then obj.Value = d_no Exit For End If Next For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "btnSearch" Then obj.Click Exit For End If Next というような感じで、 エディットボックスに値を入れたり取得したり ボタンをクリックしたりする仕方は分かりましたが、 サイト上のボタンをクリックすると、 別のウインドウやダイアログが表示されることがあります。 このような場合、HTMLコードがないため、 上記の方法では記述することができません。 新しいウインドウやダイアログのタイトルから、 IDは取得することはできましたが、この取得したIDで、 ウインドウやダイアログをアクティブにするには、 どのように記述すればよいのでしょうか。 また、ウインドウやダイアログ上のオブジェクトの 指定の仕方がよく分からないのですが、 ウインドウやダイアログ上のオブジェクトを操作するには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。(Windows10,IE,Edge)
- 締切済み
- HTML
- ID_20150222
- 回答数3
- VBAでIEで開いたダイアログのオブジェクトの操作
VBAでIE(Edge)上のWebページのエディットボックスやボタンを操作するには、 ie(COMオブジェクト)を取得して、 For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "txtDenpyoNo" Then obj.Value = d_no Exit For End If Next For Each obj In ie.document.getElementsByTagName("input") If obj.ID = "btnSearch" Then obj.Click Exit For End If Next というような感じで、 エディットボックスに値を入れたり取得したり ボタンをクリックしたりする仕方は分かりましたが、 サイト上のボタンをクリックすると、 別のウインドウやダイアログが表示されることがあります。 このような場合、HTMLコードがないため、 上記の方法では記述することができません。 新しいウインドウやダイアログのタイトルから、 IDは取得することはできましたが、この取得したIDで、 ウインドウやダイアログをアクティブにするには、 どのように記述すればよいのでしょうか。 また、ウインドウやダイアログ上のオブジェクトの 指定の仕方がよく分からないのですが、 ウインドウやダイアログ上のオブジェクトを操作するには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。(Windows10,IE,Edge)
- 締切済み
- HTML
- ID_20150222
- 回答数3
- VBAでCTRLキーが押されるまで処理を待つには
ExcelのVBAの処理で、処理結果を画面表示した後、 ユーザーが画面の内容を確認したら CTRLキーを押すと、 次の処理を続行するようにしたいのですが、 メッセージボックス(MSGBOX)などは表示しないで、 (画面表示内容以外のものは表示しないで) 処理を一時停止させて、CTRLキーが押されたら続行するには、 VBAでどのように記述すればよいでしょうか。 よろしくお願いします。(Windows10,Excel2016)
- ベストアンサー
- Excel(エクセル)
- ID_20150222
- 回答数3
- エクセル数式(関数)で0<の数値の数を指定
日付|受注数量 が縦に並ぶデータベース形式の表があります。 過去n日間分の稼働日のみ(受注数量>0)の日当たり受注数量平均を出す為に =AVERAGEIF(今日の受注数量:OFFSET(今日の受注数量,-n,0),"<>0") でやると、休日(受注数量=0)の日を"含めた"n日間になってしまうので長期休み(nよりも休日期間が長い)が入ると結果が0になってしまいます。 =AVERAGEIF(今日の受注数量:OFFSET(今日の受注数量,-(n+COUNTIF(今日の受注数量:OFFSET(今日の受注数量,-n,0),0)),0),"<>0") でn日間の期間内の0をCOUNTしてその日数分期間を拡張してやる方法を考えましたが、これも拡張した先にまた休日(0)があれば同じことです。 やりたいのは、あくまでも"0"を超過しているデータを過去n日分ほしいです。 なにか関数で代用できるのか、いい数式があるのか、教えてください。
- 締切済み
- Excel(エクセル)
- noname#262927
- 回答数3
- サーバー保存先変更に伴うショートカットのリンク先変
組織替えによりサーバー保存先が変わりました。 これによりフォルダーに保存されているショートカットのリンク先を変更する必要となりました。 ネット検索してもこれと言う例題が見つからなかったため、ご教示いただければと思います。 変更前共有サーバー: \\AA\BB\CC\DD\EE\・・・・ 変更後共有サーバー: \\AA\FF1\FF2\FF3\DD\EE\・・・・ 変更したいことは、変更前の\\AA¥BB\CCのところを\\AA¥FF1\FF2\FF3に変更する。 \DD以降は変更なし。 1、 フォルダー内に作成したExcelファイルを保存しマクロを実行して変更する。 (デスクトップ内・サーバー内に使用) 2、 フォルダー内のlnkファイルのみを対象(数個あるとする) 3、 シートのセルD3に変更前のリンク先 \\AA\BB\CCを入力 シートのセルD5に変更する \\AA\FF1\FF2\FF3を入力する。 (汎用性を持たせるために、セルD3・D5を変更すると他部署にも使用可能) 4、 ショートカットのリンク先先頭が,” \\AA\BB\CC“であれば\\AA\FF1\FF2\FF3に書き換える (¥DD以降は変わらない) 5、 現在のフォルダー内だけか、下層フォルダーも変更するか Yes/Noで選択できるようにする。 6、 ショートカットのファイル名は変更しない。 以上ですが宜しくお願いします。 ちなみに自分が作るマクロでは変数を日本語で宣言しています。 Fn ⇒ ファイル名 何か問題があるでしょうか?
- ベストアンサー
- Excel(エクセル)
- neo183
- 回答数2
- 選択したセルにピッタリ合うオートシェイプの挿入
よろしくお願いいたします。 下記のコードは行方向では選択したセルとピッタリに四角のオートシェイプが挿入できるのですが、列方向では常に1行です。 横方向も選んだ範囲だけ広がるようにするにはどう変えたらよいでしょうか。 Set shrect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _ Selection.Left, Selection.Top, Selection.Offset(0, 1).Left - Selection.Left, _ Selection.Height)
- ベストアンサー
- Visual Basic
- ticktak
- 回答数3
- 選択したセルにピッタリ合うオートシェイプの挿入
よろしくお願いいたします。 下記のコードは行方向では選択したセルとピッタリに四角のオートシェイプが挿入できるのですが、列方向では常に1行です。 横方向も選んだ範囲だけ広がるようにするにはどう変えたらよいでしょうか。 Set shrect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _ Selection.Left, Selection.Top, Selection.Offset(0, 1).Left - Selection.Left, _ Selection.Height)
- ベストアンサー
- Visual Basic
- ticktak
- 回答数3
- プログラスバー表示の更新について
office365 ,office2016でも同じ serial1のシートが50件,serial2のシートが10件の状態で macro1,macro2を連続して実行すると macro1の内容のプログレスバーは正しく表示するが、 macro2のプログレスバーは100%の時点で最大までいかない。 excelファイルを閉じて、 macro2,macro1の順に連続して実行すると macro2の内容のプログレスバーは正しく表示するが、 macro1のプログレスバーは20%の時点で実行時エラー'380' Invalid property value のエラー表示が出る。 excelファイルを開いて macro1実行し excelファイルを閉じて macro2実行すると 両方のプログレスバー共、正しく表示される また macro1実行しユーザフォームのinfo2をダブルクリックして macro2実行すると 両方のプログレスバー共、正しく表示される という状況です。 serialの値が更新されていないのが原因みたいです。 いろいろやってみたのですが、対処内容が分かりません。 どうやったらmacro1,macro2連続実行してプログラスバーの表示が正しく表示されるか教えていただきたく。 ユーザフォームinfo2のマクロ Private Sub UserForm_Initialize() Dim serial As Long serial = Worksheets("MENU").Cells(1, 8).Value With ProgressBar2 .Min = 0 .Max = serial .Value = 0 End With パーセント.Caption = "" End Sub マクロ1 sub macro1() serial = Worksheets("serial1").Cells(Rows.Count, 1).End(xlUp).row Worksheets("MENU").Cells(1, 8).Value = serial 'いろんな処理 info2.Show vbModeless info2.StartUpPosition = 0 info2.Top = 0 info2.Left = 465 ' With info2 .ProgressBar2.Value = I .パーセント.Caption = Int(I / serial * 100) & "%" .kisyu.Caption = Worksheets("serial1").Cells(I, 1).Value .Repaint End With マクロ2 sub macro2() serial = Worksheets("serial2").Cells(Rows.Count, 1).End(xlUp).row Worksheets("MENU").Cells(1, 8).Value = serial 'いろんな処理 info2.Show vbModeless info2.StartUpPosition = 0 info2.Top = 0 info2.Left = 465 ' With info2 .ProgressBar2.Value = I .パーセント.Caption = Int(I / serial * 100) & "%" .kisyu.Caption = Worksheets("serial2").Cells(I, 1).Value .Repaint End With
- ベストアンサー
- Excel(エクセル)
- 3620313
- 回答数2
- サーバー保存先変更に伴うショートカットのリンク先変
組織替えによりサーバー保存先が変わりました。 これによりフォルダーに保存されているショートカットのリンク先を変更する必要となりました。 ネット検索してもこれと言う例題が見つからなかったため、ご教示いただければと思います。 変更前共有サーバー: \\AA\BB\CC\DD\EE\・・・・ 変更後共有サーバー: \\AA\FF1\FF2\FF3\DD\EE\・・・・ 変更したいことは、変更前の\\AA¥BB\CCのところを\\AA¥FF1\FF2\FF3に変更する。 \DD以降は変更なし。 1、 フォルダー内に作成したExcelファイルを保存しマクロを実行して変更する。 (デスクトップ内・サーバー内に使用) 2、 フォルダー内のlnkファイルのみを対象(数個あるとする) 3、 シートのセルD3に変更前のリンク先 \\AA\BB\CCを入力 シートのセルD5に変更する \\AA\FF1\FF2\FF3を入力する。 (汎用性を持たせるために、セルD3・D5を変更すると他部署にも使用可能) 4、 ショートカットのリンク先先頭が,” \\AA\BB\CC“であれば\\AA\FF1\FF2\FF3に書き換える (¥DD以降は変わらない) 5、 現在のフォルダー内だけか、下層フォルダーも変更するか Yes/Noで選択できるようにする。 6、 ショートカットのファイル名は変更しない。 以上ですが宜しくお願いします。 ちなみに自分が作るマクロでは変数を日本語で宣言しています。 Fn ⇒ ファイル名 何か問題があるでしょうか?
- ベストアンサー
- Excel(エクセル)
- neo183
- 回答数2
- プログラスバー表示の更新について
office365 ,office2016でも同じ serial1のシートが50件,serial2のシートが10件の状態で macro1,macro2を連続して実行すると macro1の内容のプログレスバーは正しく表示するが、 macro2のプログレスバーは100%の時点で最大までいかない。 excelファイルを閉じて、 macro2,macro1の順に連続して実行すると macro2の内容のプログレスバーは正しく表示するが、 macro1のプログレスバーは20%の時点で実行時エラー'380' Invalid property value のエラー表示が出る。 excelファイルを開いて macro1実行し excelファイルを閉じて macro2実行すると 両方のプログレスバー共、正しく表示される また macro1実行しユーザフォームのinfo2をダブルクリックして macro2実行すると 両方のプログレスバー共、正しく表示される という状況です。 serialの値が更新されていないのが原因みたいです。 いろいろやってみたのですが、対処内容が分かりません。 どうやったらmacro1,macro2連続実行してプログラスバーの表示が正しく表示されるか教えていただきたく。 ユーザフォームinfo2のマクロ Private Sub UserForm_Initialize() Dim serial As Long serial = Worksheets("MENU").Cells(1, 8).Value With ProgressBar2 .Min = 0 .Max = serial .Value = 0 End With パーセント.Caption = "" End Sub マクロ1 sub macro1() serial = Worksheets("serial1").Cells(Rows.Count, 1).End(xlUp).row Worksheets("MENU").Cells(1, 8).Value = serial 'いろんな処理 info2.Show vbModeless info2.StartUpPosition = 0 info2.Top = 0 info2.Left = 465 ' With info2 .ProgressBar2.Value = I .パーセント.Caption = Int(I / serial * 100) & "%" .kisyu.Caption = Worksheets("serial1").Cells(I, 1).Value .Repaint End With マクロ2 sub macro2() serial = Worksheets("serial2").Cells(Rows.Count, 1).End(xlUp).row Worksheets("MENU").Cells(1, 8).Value = serial 'いろんな処理 info2.Show vbModeless info2.StartUpPosition = 0 info2.Top = 0 info2.Left = 465 ' With info2 .ProgressBar2.Value = I .パーセント.Caption = Int(I / serial * 100) & "%" .kisyu.Caption = Worksheets("serial2").Cells(I, 1).Value .Repaint End With
- ベストアンサー
- Excel(エクセル)
- 3620313
- 回答数2