ushi2015 の回答履歴

全862件中141~160件表示
  • VLookupで一致しなかった時のVBAでの処理

    On Error ~を使わないで、 VLookup()で一致しなかった時の処理をさせたいのですが どのように記述すればよいでしょうか。 例えば、以下のようなコードの場合、 一致したデータがない時にyに-1を代入するには 以下のコードをどのように記述すればよいのでしょうか。 --------------------- Dim x As Integer Dim y As String x = 7 y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) --------------------- 以下はいずれもエラーになりますが、以下のような感じで処理がしたいです。 --------------------- If IsError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then  y = -1 Else  y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then  y = -1 Else  y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- y = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False), -1) --------------------- なお、以下のように本来エラーではない処理で On Error Resume Nextを使うのは、 本当のエラーの処理と混同するため不可 --------------------- On Error Resume Next y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) If Err <> 0 Then y = -1 On Error GoTo 0 ---------------------

    • yam2012
    • 回答数2
  • ハーレーダビッドソンは何故あんなに高い?

    国内で出回っている海外メーカーのバイクは数多くありますが、 「ハーレーダビッドソン」だけ、頭一つ抜きん出て、高額で 取引されてるのは何故でしょうか。 輸入車に掛かる関税によるものでしょうか。 それとも単純な車種人気によるものでしょうか。 イージーライダーとかターミネーターの影響とか…

  • EXCEL VBA VLOOKUP 範囲を変数で

    Excel VBA で VLookup()の第2引数の範囲を行と列の数値の変数で指定したいのすが どのように記述すればよいでしょうか。 以下の式がエラーにならないように具体的に直していただけないでしょうか。 よろしくお願いします。 ----------------------------------- Dim d1 As String Dim d2 As String Dim r1 As Integer Dim r2 As Integer Dim c1 As Integer Dim c2 As Integer Dim c3 As Integer d1 = "愛知" r1 = 2 r2 = 782 c1 = 3 c2 = 5 c3 = 4 d2 = VLookup(d1, Worksheets("Sheet1").Range(Cells(r1, c1), Cells(r2, c2)), c3, False)

    • yam2012
    • 回答数3
  • EXCEL VBA VLOOKUP 範囲を変数で

    Excel VBA で VLookup()の第2引数の範囲を行と列の数値の変数で指定したいのすが どのように記述すればよいでしょうか。 以下の式がエラーにならないように具体的に直していただけないでしょうか。 よろしくお願いします。 ----------------------------------- Dim d1 As String Dim d2 As String Dim r1 As Integer Dim r2 As Integer Dim c1 As Integer Dim c2 As Integer Dim c3 As Integer d1 = "愛知" r1 = 2 r2 = 782 c1 = 3 c2 = 5 c3 = 4 d2 = VLookup(d1, Worksheets("Sheet1").Range(Cells(r1, c1), Cells(r2, c2)), c3, False)

    • yam2012
    • 回答数3
  • 【VBA】日付から遅延案件を抽出、新ファイルに転記

    工程が何十項目もある案件から、各項目の予定と実績を比較し、1項目でも遅延している案件があったら別ファイルに遅延リストとして抜き出してまとめる、というマクロを作成しています。 見よう見まねで自分で書いてみたのですが、全然うまくいかず力尽きました。 どうぞお力をお貸し下さい。 工程は下記のような感じで、A列の案件に対して、ずっと横の方までランダムに予定と実績が載っています。 各項目の予定と実績は必ずしも隣合っているわけではなく、項目名もバラバラです。     A列 ~ BH列   BL列 ~ BL列   BO列 1行目 案件名  調査日        開始日  2行目      予定    実績   開始予定 実績 ~ 16行目までタイトル行 とりあえず作ってみたマクロは、ざっと下記のような動きにしています。 1. マクロを走らせるとInputBoxが開き、それに任意の日付(例えば2017/1/5)を入れる。 2. 予定列(ランダムなので指定が必要)のフォントが全て黒になる。 3. 2017/1/5以前かつ2000/1/1より後の予定日が入っていて、実績が空白もしくは2000/1/1以前となっている案件の予定日のフォントが赤になる。 4. さらにシートの空いている列を探してきて該当案件に"遅延"とコメントを入れる 5. 遅延となった案件でフィルタをかける。 (オートフィルタは17行目にかける) ここで力尽きましたが、続きは下記のようにしたいです。 6. フィルタのかかっている案件だけを、新しいファイルを開いてそこに転記する。 (途中空白のセルが大量にあるので、A列から記載のあるセルまでを選択する方法がわかりません) 途中、同じ作業の分を列名だけ変えて何十セットも書いていますが、これも短くする記述があったらご教示いただけますと助かります。 会社にしかパソコンがないので、返信が遅くなってしまうかと思いますが、何卒よろしくお願いいたします。 ーーーーーー Sub Sample() Dim WS As Worksheet Dim i As Integer Dim LastROW As Long Dim DateC As Date Dim MinDate As Date Set WS = ThisWorkbook.Sheets("管理項目") LastROW = WS.Cells(3, Columns.Count).End(xlToLeft).Column DateC = InputBox("任意の日付を入力してください(例:2017/1/1)") MinDate = 2000 / 1 / 1 With WS For i = 18 To .Cells(Rows.Count, "C").End(xlUp).Row ーーーーーーーー '調査日の予定日付を黒にする  .Cells(i, "BH").Font.Color = vbBlack '開始日の予定日付を黒にする  .Cells(i, "BL").Font.Color = vbBlack ーーーーーーーー 上記を25セット分記載していますが、省略します。 ーーーーーーーー '調査日の予定を赤字にしてコメント記載  If (.Cells(i, "BH") <= DateC And .Cells(i, "BH") >= MinDate) _  And (.Cells(i, "BI") = "" Or .Cells(i, "BI") <= MinDate) Then   .Cells(i, "BH").Font.Color = vbRed .Cells(i, LastROW + 1) = "遅延"  End If '開始日の予定を赤字にしてコメント記載  If (.Cells(i, "BL") <= DateC And .Cells(i, "BL") >= MinDate) _   And (.Cells(i, "BO") = "" Or .Cells(i, "BO") <= MinDate) Then   .Cells(i, "BL").Font.Color = vbRed   .Cells(i, LastROW + 1) = "遅延"  End If ーーーーーーーー 上記も25セット記載していますが、省略します。 ーーーーーーーー Next i End With 'オートフィルタでデータを抽出して新しいファイルに転記 With WS  .Range(Cells(17, 1), Cells(17, LastROW + 1)).AutoFilter  .Cells(, LastROW + 1).AutoFilter Field:=LastROW + 1, Criteria1:="遅延" End With End Sub ーーーーーーーー

  • セル内のデータが空白の場合、その行は印刷しない

    エクセルデータで1000行、列項目が10項目ある表を作りましたが、データのない項目があるので印刷時にデータのない行は印刷しない方法を教えてください。 ただし、AとB列は品名と品名コードが常に表示されます。 データとして在庫数、重量、単価の項目があり金額は重量×単価の計算式があります。 ※在庫数、重量、単価が空白の場合はその行は空白行とみなし印刷しないようにする。  また、プレビューで見た場合も空白行は詰めて表示されること ※在庫数、重量、単価のセル内には関数が登録されておりデータが0の場合は空白となるように 設定してあります。  サンプル画像を添付しますのでよろしくお願いします。

    • noname#248032
    • 回答数4
  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • AccessのVBAに関しての質問です。

    クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub

  • エクセルで「Enter」が押されたら処理を動かす

    よろしくお願いします。 エクセルでA1のセルの何か入力されたら、A2に「aaaaa」、A3に「bbbbb」と表示したいのです。B6のセルに何かが入力されたらB7に「aaaaa」とB8に「bbbbb」です。 適当な大きさにセルを編集して使うのでセルの高さや幅は可変です。A4用紙で印刷出来る範囲で利用するので、どのセルに入力されるかはわかりませんし、どの列まで、どの行まで利用するかも決まりません。どのセルに入力されても、入力されたセルの1行下に「aaaaa」、2行下に「bbbbb」という動きをするようにしたいのです。 また、何かを入力されてというのは「Enter」が押された時をイメージしていますが、実際には「12345」とキーを押し「→」でセル移動することもあると思いますし、マウスで移動することもあるので、「セルに何かが入ったら」という感じです。 今、セルの条件付き書式設定で「次のセルのみを書式設定」で「空白なし」の場合に塗りつぶしをしているのですが、そのタイミングで1行下と2行下に固定表示したいです。 勿論、そのセルが空白になれば、1行下、2行下も空白に戻したいです。 よろしくお願いします。 教えてもらえば理解出来るのですが、エクセルでマクロ?を組むのは経験が浅く、何処に何を書けば良いのか、詳しく教えてもらえれば幸いです。

  • EXCELでマクロが

    昨日から、期待する動きでなくなりました。 シートに新たに数式を加え、rank関数ではきちんと表示するのですが、マクロを動かすと、 期待した動きでなくなりました。 Sub Sheet2STD昇順並べ替え() ' ' Sheet2STD昇順並べ替え Macro ' ' Range("B6:V24").Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C7:C24") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("B6:V24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub 図にある下向きの矢印にマクロを登録しています。

  • パソコンに詳しい方(画像あり)お教えください>_<

    パソコンに詳しい方(画像あり)お教えください>_< よくネット記事でページ選択のところを自分の希望するページ(数字)をクリック等する方法がわかりません>_< 例 この画像のようなやつで 25ページ目からみたい場合30を押して少しずつ戻るしかないのでしょうか? 完全にページ指定できる方法があったら教えていただきたいです(>人<;)

  • EXCEL・VBAで、範囲名を参照したい。

    またまたお世話になります。 タイトルの通りなのですが、EXCELで作成している出勤表(sheet毎に月別にし、縦軸に社員名、横軸に日付を入れてあります。社員名は同一のブックの別シートにまとめてあり、参照で各月に表示してあります。)で、出勤した日に”1”を入れるのですが、今は手で月ごと、社員名毎に範囲名を作成し、一ヶ月分をまとめて入力しています。 今はまだ40名程なので、月が変わった時に範囲名を手で付け替えているのですが、人数が増えてきたり、入力担当者が変わったりした時に、この方法は大変になってくると思います。 そこで、現在の範囲名登録状況を確認し、(配列で良いと思います。)社員名と照合し、選択シートに自動的に割り振るように出来たら良いと思い、挑戦しているのですが、『現在の範囲名登録状況を確認』するところが、検索しても中々出てこなくて困っております。 予め、何という『範囲名』が登録されているか分からない、それを取得したい、といった場合、そういうことは可能なのか、範囲名を付け替えるには、DIMにREDIMがあるように一つのコマンドで可能なのか、それとも、削除→シート変更→作成を繰り返さなければ不可能なのか、また、方法は在るのか等知りたいです。よろしくお願い致します。

  • 画像の部品(工具)の名称は何でしょうか?

    画像の部品(工具)の名称は何でしょうか? 雪山の登山に使う滑り止めでしょうか? よろしくお願いします。

  • EXCEL・VBAで、範囲名を参照したい。

    またまたお世話になります。 タイトルの通りなのですが、EXCELで作成している出勤表(sheet毎に月別にし、縦軸に社員名、横軸に日付を入れてあります。社員名は同一のブックの別シートにまとめてあり、参照で各月に表示してあります。)で、出勤した日に”1”を入れるのですが、今は手で月ごと、社員名毎に範囲名を作成し、一ヶ月分をまとめて入力しています。 今はまだ40名程なので、月が変わった時に範囲名を手で付け替えているのですが、人数が増えてきたり、入力担当者が変わったりした時に、この方法は大変になってくると思います。 そこで、現在の範囲名登録状況を確認し、(配列で良いと思います。)社員名と照合し、選択シートに自動的に割り振るように出来たら良いと思い、挑戦しているのですが、『現在の範囲名登録状況を確認』するところが、検索しても中々出てこなくて困っております。 予め、何という『範囲名』が登録されているか分からない、それを取得したい、といった場合、そういうことは可能なのか、範囲名を付け替えるには、DIMにREDIMがあるように一つのコマンドで可能なのか、それとも、削除→シート変更→作成を繰り返さなければ不可能なのか、また、方法は在るのか等知りたいです。よろしくお願い致します。

  • スクレイピングについて【初心者】

    私はネットショッピングが大好きで、普段からAmazon、楽天、Yahooショッピングなどで買い物しております。 ネットショッピングで買い物するようになって気づいたのですが、サイトが違うと、同じ商品にも関わらず値段が全然違うのですね。(もちろんですが...) 同じ商品の価格を比較してくれる「価格.com」のようなサイトもあるのですが、私が普段買い物するような商品は価格.comに載ってないような商品やサイトもあるため、自分でネットサーフィンしながら、安いサイトで買っています。 その際に、商品が同じであるかどうかは写真だけでは判りません。そこで使っているのが、「JANコード」です。 これは商品ごとに割り当てられた13ケタの数字なので、商品名や写真で同じ商品か分かりにくい場合にも判別することができました。 最近スクレイピングというテクニックの存在を知りました。 もちろん相手のサイトに迷惑がかからないように気を付けないことは承知しております。 岡崎図書館事件の様なことにならないために、スクレイピングするのは一回限りです。 私がやりたいことですが、Lohacoのサイトで商品の一覧から、 (1)商品名(2)値段(3)JANコード(4)URL 以上の4つを抜き出して、エクセルにまとめることは可能でしょうか? また可能の場合は、どのようなプログラミングで出来ますでしょうか。 LOHACOホーム>コスメ・スキンケア・美容>スキンケア・基礎化粧品>化粧水>エイジング化粧水 http://lohaco.jp/g4/55-5501-5501004-55010040002/?resultCount=100&va... 例えば以上のページです。このページにはスキンケア用品が74商品登録してあります。(現時点) 最終的にはExcelのA列に商品名、B列に値段、C列にJANコード、D列にURLを抜き出したいです。 私はこれまでプログラミングを勉強したことがなかったため、かなりハードルが高かったです。 いちを「データを集める技術(佐々木拓郎 著)」と「ExcelVBAでIEを思いのままに操作できるプログラミング術」という本を購入して勉強してみました。 しかしプログラミングの知識が全くないまま進んで行ったために、一か月くらい勉強しましたが、途中で挫折してしまいました。 また、VBAの基本から勉強しないと思い「Excel VBA 本格入門」という本を勉強しましたが、こちらは一通り理解することができました。 既存のスクレイピングツールを色々試したのですが、「Octoparse」というツールがなかなか使いやすかったです。 しかしホームページごとに構成が違ったためか、なかなか思い通りにツールが動かず、上のサイトのJANコードを抜き出すことができませんでした。 回答を頂ければ幸いです。よろしくお願いいたします。 補足もしプログラミングにお詳しい方がいらっしゃいましたら、一つの例として参考にさせて頂きたいので、上記の質問が解決できるプログラミングをご教授頂けると嬉しく思います。 ※言語は問いませんので、幅広い回答をお待ちしております。

    • noname#245127
    • 回答数2
  • Excelマクロでピポットテーブルを作りたい

    マクロを使ってピポットテーブルを作ろうとしていますが、エラーメッセージがあちこちに出てしまい何が悪いのかわかりません。どうかご助言の程、何卒よろしくお願い申し上げます。 Sub 名別_M() ' ' 名別_M Macro ' Range("A2").Select With Worksheets.Add() '新しいシートを作成し、名前を「名別」にする処理 .Name = "名別" Dim NewSheetName As String NewSheetName = InputBox("新しいシート名を入力ください") ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ NewSheetName!R1C1:R95C18,Version:=xlPivotTableVersion15). CreatePivotTable TableDestination:="名別!R3C1", TableName:="ピボットテーブル1" _ , DefaultVersion:=xlPivotTableVersion15 End With '「名別」にした最後の処理 Sheets("名別").Select Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("UserName") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("作業時間"), "合計 / 作業時間", xlSum Range("A3").Select ActiveSheet.PivotTables("ピボットテーブル1").CompactLayoutRowHeader = "UerName" Rows("1:2").Select Selection.Delete Shift:=xlUp Range("E26").Select End Sub