ushi2015 の回答履歴
- データが特殊で、集計作業に手間がかかっている
顧客情報テーブルに対してクエリを流し、「利用している店」ごとの人数を出しています。 ここではテーブル名を「顧客情報テーブル」、「利用している店」のフィールド名を「店キー」とします。 流しているクエリは下記の通りです。 SELECT 店キー, COUNT(*) FROM 顧客情報テーブル GROUP BY 店キー; この「店キー」は、値が入っている場合は、実在する企業名のみ登録されているようなので、値さえ入っていれば、店ごとの利用者がこのクエリで出せます。 しかしながら、私はシステムの中身まで分からないのでどのようになっているのか知りませんが、「店キー」に値がないレコードがかなりあります。 想像ですが、システムリリース初期のデータについてはそういうレコードがあるのと、マイナーな店については「店キー」が入っていないようです。 この場合、「店名」というフィールドの値を参照します。 「店名」は、ユーザーが自分で入力して登録する部分のようです。 基本的には実在する店の名前を入力してくれているようです。(こんな店ある?っと思ったら、ググってみたり) ただ、お試しで使っているユーザーが「りんご商店」など、架空の店名を入れる場合も多いです。 で、下記のクエリを流して、店キーが空のレコードの、店名を得ています。 SELECT 店名, COUNT(*) FROM 顧客情報テーブル WHERE 店キー = "" GROUP BY 店名; ここからが大変で、実在する店とそうでない店を自力で分けて、最初のクエリで出した集計結果と合算しています。 実在しないのについては、まとめて「その他」扱いにしています。 また、実在する店の名前でも「○○商店 東京店」、「○○商店 神奈川店」のように、支店名が入力されている場合があるので、目で見て一つの 「○○商店」としてカウントし、最初のクエリ結果と合算しているわけです。 大変手間がかかるし、ミスするので、これを何とか一本のクエリで自動化できないものでしょうか? CASE式を活用すればなんとかなりますでしょうか。 よろしくお願いします。
- ベストアンサー
- MySQL
- noname#229570
- 回答数2
- Libre office マクロ 連番印刷
質問します。libre office で連番印刷したいです。エクセルは表を複数印刷 教えて。で調べてできました。libre office はエラーがでました。 Libre officeマクロ に詳しい方、 表を複数枚印刷できるLibre office マクロコードを教えて下さい。 宜しくお願いします。
- 締切済み
- Excel(エクセル)
- Beej
- 回答数2
- Excel VBAで別ブックのマクロから配列を取る
Excel VBAで別ブックのマクロで計算した結果を配列で渡したいのですが、上手い方法が見つかりません。 同じブック内であれば、 Function GetAry(Imax As Integer, ByRef MyAry As Variant) as Boolean のような関数を作れば、GetAry = True の時に返値の MyAry が有効であるという判断ができますが、この関数を別ブックから使う場合は、参照渡しができません。 これはVBAの仕様なので仕方ないとして、以下のようなマクロを組んでみました。 '------------------------------------------------------- ' Book1.xlsm(呼び出される側) '------------------------------------------------------- Function MyAry(Imax As Integer) As Variant Dim i As Integer Dim SubAry() As Variant If Imax > 10 Then MyAry = False Else For i = 1 To Imax ReDim Preserve SubAry(i) SubAry(i) = i Next MyAry = SubAry End If End Function '------------------------------------------------------- ' Book2.xlsm(呼び出す側) '------------------------------------------------------- Sub GetMyAry() Dim DataAry As Variant Dim Imax As Integer Imax = 11 DataAry = Application.Run("Book1!MyAry", Imax) If DataAry <> False Then MsgBox UBound(DataAry) Else MsgBox DataAry End If End Sub '------------------------------------------------------- Imax = 11 であれば、メッセージボックスに False が表示されますが、Imax = 10 だと当然ですが「型が一致しません」というエラーになります。 エラートラップで誤魔化そうかとも思ったのですが、もっとスマートな方法がないでしょうか。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- masnoske
- 回答数3
- エクセルの複数のセルの値からシート名を自動変更する
エクセルのシート名を複数のセルから自動で変更する場合のマクロを教えてください。 E6に「平成」、G6に「年」、I6に「月」、K6に「日」と入力されている状態で、 間のF6、H6、J6が空欄となっており、それぞれに年と月と日を入力するような状態となっています。 このF6、H6、J6に入力した年月日情報をシート名にするようなマクロは可能でしょうか? 「28.2.6」のように。もしくは「280206」のように6桁で。 また、F6、H6、J6の3つとものセルに値を入力した場合に、シート名が変更され、 その後に、それかのセルの情報を変更した場合は、その情報に変更されるようになればありがたいです。 下記のQ&Aが近いのですが、複数セルの情報からシート名を変更する方法が分かりません。 http://okwave.jp/qa/q2025849.html よろしくお願いします。
- エクセルの複数のセルの値からシート名を自動変更する
エクセルのシート名を複数のセルから自動で変更する場合のマクロを教えてください。 E6に「平成」、G6に「年」、I6に「月」、K6に「日」と入力されている状態で、 間のF6、H6、J6が空欄となっており、それぞれに年と月と日を入力するような状態となっています。 このF6、H6、J6に入力した年月日情報をシート名にするようなマクロは可能でしょうか? 「28.2.6」のように。もしくは「280206」のように6桁で。 また、F6、H6、J6の3つとものセルに値を入力した場合に、シート名が変更され、 その後に、それかのセルの情報を変更した場合は、その情報に変更されるようになればありがたいです。 下記のQ&Aが近いのですが、複数セルの情報からシート名を変更する方法が分かりません。 http://okwave.jp/qa/q2025849.html よろしくお願いします。
- AファイルのD5:D6の合計をBファイルのC4へ
D5:D6、D7:D8、D9:D10・・・それぞれを別ファイルのC4、C5、C6・・・へ そしてオートフィルでコピーする方法を教えてください。 (AファイルのD5:D6の合計をBファイルのC4へ)
- ベストアンサー
- Excel(エクセル)
- IInc
- 回答数1
- ”インデックスが有効範囲にありません”と言われます
はじめまして。 VBA初心者です。 次のプログラムを実行すると、 ”インデックスが有効範囲にありません”と言われます。 見よう見まねで本を参考に式を書いてみました。 1.csv のシート名”1”→ 2.csvのシート名"2"→…→100.csvのシート名”100”と順にファイルを読込みませて、 1つのシートに上から、1.csvのシート”1”の結果、2.csvのシート名の”2”の結果、と順に100行まで書き込みたいと考えているのですが上記のエラーになってしまいました。 今のままだと1行目、2行目に1.csvの結果が表示されるだけです。 エラーの原因がわからなくなってしまいました… すみませんが、よろしくお願いします。 以下、VBAです。 Option Explicit Sub test() Dim fileNames As Variant Dim a(12) As Long Dim lp As Integer fileNames = Application.GetOpenFilename(MultiSelect:=True) If IsArray(fileNames) = True Then For lp = 1 To UBound(fileNames) Workbooks.Open (fileNames(lp)) ThisWorkbook.Worksheets("Sheet1").Range("B2", "B" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF5").Value ThisWorkbook.Worksheets("Sheet1").Range("C2", "C" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF6").Value ThisWorkbook.Worksheets("Sheet1").Range("D2", "D" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF7").Value ThisWorkbook.Worksheets("Sheet1").Range("E2", "E" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF8").Value ThisWorkbook.Worksheets("Sheet1").Range("F2", "F" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF9").Value ThisWorkbook.Worksheets("Sheet1").Range("G2", "G" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF10").Value ThisWorkbook.Worksheets("Sheet1").Range("H2", "H" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF11").Value ThisWorkbook.Worksheets("Sheet1").Range("I2", "I" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF12").Value ThisWorkbook.Worksheets("Sheet1").Range("J2", "J" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF13").Value ThisWorkbook.Worksheets("Sheet1").Range("K2", "K" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF14").Value ThisWorkbook.Worksheets("Sheet1").Range("L2", "L" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF15").Value ThisWorkbook.Worksheets("Sheet1").Range("M2", "M" & lp).Value _ = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF16").Value a(1) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF5").Value a(2) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF6").Value a(3) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF7").Value a(4) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF8").Value a(5) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF9").Value a(6) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF10").Value a(7) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF11").Value a(8) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF12").Value a(9) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF13").Value a(10) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF14").Value a(11) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF15").Value a(12) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF16").Value ThisWorkbook.Worksheets("Sheet1").Range("N2", "N" & lp).Value _ = (a(1) + a(2) + a(3) + a(4) + a(5) + a(6) + a(7) + a(8) + a(9) + a(10) + a(11) + a(12)) / 12 ThisWorkbook.Worksheets("Sheet1").Range("O2", "O" & lp).Value _ = WorksheetFunction.Max(a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9), a(10), a(11), a(12)) ActiveWorkbook.Close a(1) = 0 a(2) = 0 a(3) = 0 a(4) = 0 a(5) = 0 a(6) = 0 a(7) = 0 a(8) = 0 a(9) = 0 a(10) = 0 a(11) = 0 a(12) = 0 Next End If End Sub
- ベストアンサー
- Excel(エクセル)
- ymstakk
- 回答数2
- EXCEL VBA 取得したセルの列の最終行
お客さんからいただいたEXCELフォーマットに沿って、集計ツールを作成していますが 下記でつまってしまいました。 Wb.Worksheets("Sheet1").Cells.Find("実施日").Select Sel_Col = Selection.Column Last_Row = Wb.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row ※1 For i = Last_Row To 2 Step -1 If Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Value = Day Then ※2 If Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "A" Then A_count = A_count + 1 ElseIf Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "B" Then B_count = B_count + 1 ElseIf Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "C" Then C_count = C_count + 1 End If Else End If Next i まず※1の箇所ですが、Sheet1の実施日と入力されているセルの列番号を取得して その列の最終行を取得したいのですが、上記作成したものですと入力されている列全部の 中での最終行が取得されてしまいます。 この場合、Sel_Col をどのように使えばよろしいでしょうか? 次に※2ですが、※1で取得した列の最終行から1つずつ上に上がりながら 日付が今日であれば、そのセルから5つ左のセルのA、B、Cいずれかを カウントするという造りにしたいと思っています。 実行すると1004エラーでアプリケーション定義、オブジェクト定義のエラーと 出てしまいます。 Wbはset Wbとして開いたブックを定義しています。 DayはDay = Dateで今日の日付を取得しています。 独学で無茶苦茶なコードですが、 どなたか詳しい方、ご教示お願いいたします。
- ベストアンサー
- Visual Basic
- garigarisama
- 回答数3
- EXCEL VBA 取得したセルの列の最終行
お客さんからいただいたEXCELフォーマットに沿って、集計ツールを作成していますが 下記でつまってしまいました。 Wb.Worksheets("Sheet1").Cells.Find("実施日").Select Sel_Col = Selection.Column Last_Row = Wb.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row ※1 For i = Last_Row To 2 Step -1 If Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Value = Day Then ※2 If Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "A" Then A_count = A_count + 1 ElseIf Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "B" Then B_count = B_count + 1 ElseIf Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Offset(-5).Value = "C" Then C_count = C_count + 1 End If Else End If Next i まず※1の箇所ですが、Sheet1の実施日と入力されているセルの列番号を取得して その列の最終行を取得したいのですが、上記作成したものですと入力されている列全部の 中での最終行が取得されてしまいます。 この場合、Sel_Col をどのように使えばよろしいでしょうか? 次に※2ですが、※1で取得した列の最終行から1つずつ上に上がりながら 日付が今日であれば、そのセルから5つ左のセルのA、B、Cいずれかを カウントするという造りにしたいと思っています。 実行すると1004エラーでアプリケーション定義、オブジェクト定義のエラーと 出てしまいます。 Wbはset Wbとして開いたブックを定義しています。 DayはDay = Dateで今日の日付を取得しています。 独学で無茶苦茶なコードですが、 どなたか詳しい方、ご教示お願いいたします。
- ベストアンサー
- Visual Basic
- garigarisama
- 回答数3
- ABUSのアラームディスクロック
今月の末に隼を新車で購入し防犯対策の一つにのこれを買ってみようかと思っているのですが、バイクカバー外す時にアラームなってしまいますか?またカバーが雨や風で揺れて鳴ることかありますか?余り誤作動多いなら近所迷惑になりそうなので迷っています。またカバー外すときに鳴らさないようなコツがあるのでしょうか?よろしくお願い致しますm(_ _)m
- 締切済み
- バイク・原付自転車
- eyesloveyou3
- 回答数2
- エクセルで、その行ごとの最大値のセルに色をつけたい
エクセル2010を使っています。 その行ごとの最大値のセルに色をつけるやり方を教えていただけませんか? B1セル→1時 C1セル→2時 D1セル→3時 A2セル→1月1日 A3セル→1月2日 A4セル→1月3日 B2セルからB4セル、C2セルからC4セル、D2セルからD4セルには、ばらばらの数字 が入力されています。 色々試したのですが、どうしても分かりません。 どなたか、分かる方がいれば、どうぞ教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- noname#241834
- 回答数2
- エクセルで、その行ごとの最大値のセルに色をつけたい
エクセル2010を使っています。 その行ごとの最大値のセルに色をつけるやり方を教えていただけませんか? B1セル→1時 C1セル→2時 D1セル→3時 A2セル→1月1日 A3セル→1月2日 A4セル→1月3日 B2セルからB4セル、C2セルからC4セル、D2セルからD4セルには、ばらばらの数字 が入力されています。 色々試したのですが、どうしても分かりません。 どなたか、分かる方がいれば、どうぞ教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- noname#241834
- 回答数2
- ABUSのアラームディスクロック
今月の末に隼を新車で購入し防犯対策の一つにのこれを買ってみようかと思っているのですが、バイクカバー外す時にアラームなってしまいますか?またカバーが雨や風で揺れて鳴ることかありますか?余り誤作動多いなら近所迷惑になりそうなので迷っています。またカバー外すときに鳴らさないようなコツがあるのでしょうか?よろしくお願い致しますm(_ _)m
- 締切済み
- バイク・原付自転車
- eyesloveyou3
- 回答数2
- マラソン、今は何キロ走れますか?
今現在、マラソン(及びジョギングなど)は何キロぐらい走れますか? 僕は1キロぐらいかもしれません・・・
- ベストアンサー
- ダイエット・運動
- noname#250413
- 回答数7
- 複数のキーを参照して、別ブックに転記する方法
KeyIDと項目名を参照して各セルの記載を別ブックに転記したいのですが、VBAで動かす方法をどなたかご教示いただけますでしょうか。 マスターブックから、複数のブックへ、KeyIDを元に適切な項目名のセルに転記をさせたいです。 また逆に、複数ブックからマスターブックへも同じ方法で転記可能なVBAを組みたいと思っております。 KeiIDに対して、200以上の項目列があるので、毎回Vlookupをかけるのがかなりの手間で、何とか自動化できないか考えたのですが、複雑すぎてお手上げ状態です・・・ 皆様のお知恵を拝借したく、何卒よろしくお願いいたします。 作業の流れとしては、マスターブックを開きマクロを走らせると、任意のブックを開くように指示が出るので、それを開く。(ここまでは作成済み) 複数ブックのKeyIDが数千行あるので、それをマスターブックの数万行の中のKeyIDと合致するかを確認し、合致する場合は、200項目の中で一致するセルに複数ブックの内容を転記する。またその逆もできるようにする、という感じです。 それぞれのブックは以下のような作りになっています。 複数のブックの項目名は、ブックごとに異なりますが、マスターブックには全ての項目名が入っています。 KeyIDおよび項目名のある列・行は、三つのブックでそれぞれ異なります。 KeyIDがどちらかに存在しない場合もあるので、その場合は無視する、という設定にしていただけますと助かります。 マスターブック A列 B列 C列 D列 E列 F列 ~200列 23行 名前 住所 KeyID 電話番号 作業予定 作業実績 ブック1 A列 B列 C列 D列 ~150列 12行 KeyID 住所 作業予定 作業実績 ブック2 A列 B列 C列 ~100列 5行 名前 KeyID 作業実績 どうぞよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- OKWAVEVBA
- 回答数3
- エクセル、保存、csvで。
WIN10でexcel2007を使用しております。 通常のxlsxファイルで使用中に、csvでバックアップ保存のようなことをしたいと考えております。 そもそも可能なものでしょうか。 可能であれば、その方法を教えていただきたければとおもいます。
- ベストアンサー
- Excel(エクセル)
- hasamitogi
- 回答数5
- エクセル、保存、csvで。
WIN10でexcel2007を使用しております。 通常のxlsxファイルで使用中に、csvでバックアップ保存のようなことをしたいと考えております。 そもそも可能なものでしょうか。 可能であれば、その方法を教えていただきたければとおもいます。
- ベストアンサー
- Excel(エクセル)
- hasamitogi
- 回答数5
- 複数のキーを参照して、別ブックに転記する方法
KeyIDと項目名を参照して各セルの記載を別ブックに転記したいのですが、VBAで動かす方法をどなたかご教示いただけますでしょうか。 マスターブックから、複数のブックへ、KeyIDを元に適切な項目名のセルに転記をさせたいです。 また逆に、複数ブックからマスターブックへも同じ方法で転記可能なVBAを組みたいと思っております。 KeiIDに対して、200以上の項目列があるので、毎回Vlookupをかけるのがかなりの手間で、何とか自動化できないか考えたのですが、複雑すぎてお手上げ状態です・・・ 皆様のお知恵を拝借したく、何卒よろしくお願いいたします。 作業の流れとしては、マスターブックを開きマクロを走らせると、任意のブックを開くように指示が出るので、それを開く。(ここまでは作成済み) 複数ブックのKeyIDが数千行あるので、それをマスターブックの数万行の中のKeyIDと合致するかを確認し、合致する場合は、200項目の中で一致するセルに複数ブックの内容を転記する。またその逆もできるようにする、という感じです。 それぞれのブックは以下のような作りになっています。 複数のブックの項目名は、ブックごとに異なりますが、マスターブックには全ての項目名が入っています。 KeyIDおよび項目名のある列・行は、三つのブックでそれぞれ異なります。 KeyIDがどちらかに存在しない場合もあるので、その場合は無視する、という設定にしていただけますと助かります。 マスターブック A列 B列 C列 D列 E列 F列 ~200列 23行 名前 住所 KeyID 電話番号 作業予定 作業実績 ブック1 A列 B列 C列 D列 ~150列 12行 KeyID 住所 作業予定 作業実績 ブック2 A列 B列 C列 ~100列 5行 名前 KeyID 作業実績 どうぞよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- OKWAVEVBA
- 回答数3