ka_na_de の回答履歴
- Excel VBA データの入っているセルの取り出し
Excel VBA データの入っているセルの取り出し Excel2007使用です。 大きなセル範囲の中にデータが点在している場合に、そのデータを一か所にまとめるマクロを作りたいです。セル範囲は決まっています(A1:Q100)。最終的には隣のセルの1列にまとめたいです。 以下のようなマクロを作ってみましたが、いずれも作動しませんでした(エラーメッセージも出ず) NullをEmptyに変えてみても同じでした。 (ややこしいですが、アクティブセルはSheet2、Sheet1へ貼り付けたい) (とりあえずシート内で列上部にまとめようとした) Dim myRange As Range For Each myRange In Range("A1:Q100") If myRange.Value = Null Then myRange.Delete xlShiftUp End If Next myRange End Sub (1行1列ずつの参照をループさせて「空白でない」セルを切り取り-貼り付けさせようとした) Worksheets("sheet2").Activate Dim Gyou As Integer Dim Retsu As Integer For Gyou = 1 To 100 For Retsu = 1 To 17 If Cells(Gyou, Retsu).Value = Not Null Then Cells(Gyou, Retsu).Cut Destination:=Worksheets("sheet1").Cells(5, 2) End If Next Retsu Next Gyou End Sub また、以下のマクロは、実行すると現状のままSheet1のE列以降に移るだけで、データのあるセルだけがまとまるという状態にはなりません。 Range("A1:Q100").SpecialCells(xlCellTypeVisible).Cut Destination:=Worksheets("Sheet3").Range("E1") End Sub 以下は某サイトで、まさに「空白セルを削除しデータの入ってるセルを上詰めにする」というマクロが紹介されていたので、加工してやってみましたが、「RangeクラスのDeleteメソッドが失敗しました」という実行時エラーが出てできませんでした。 Dim WS As Worksheet Dim myRng As Range Dim Lrow As Long Set WS = Worksheets("Sheet1") Lrow = WS.Range("A" & CStr(Rows.Count)).End(xlUp).Row Set myRng = WS.Range("A1:A" & CStr(Lrow)) myRng.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp End Sub データの入っているセルだけを取り出して一つの列にまとめたいのですが、どうしたらいいのでしょうか。
- ベストアンサー
- オフィス系ソフト
- noname#174048
- 回答数6
- Excel VBA データの入っているセルの取り出し
Excel VBA データの入っているセルの取り出し Excel2007使用です。 大きなセル範囲の中にデータが点在している場合に、そのデータを一か所にまとめるマクロを作りたいです。セル範囲は決まっています(A1:Q100)。最終的には隣のセルの1列にまとめたいです。 以下のようなマクロを作ってみましたが、いずれも作動しませんでした(エラーメッセージも出ず) NullをEmptyに変えてみても同じでした。 (ややこしいですが、アクティブセルはSheet2、Sheet1へ貼り付けたい) (とりあえずシート内で列上部にまとめようとした) Dim myRange As Range For Each myRange In Range("A1:Q100") If myRange.Value = Null Then myRange.Delete xlShiftUp End If Next myRange End Sub (1行1列ずつの参照をループさせて「空白でない」セルを切り取り-貼り付けさせようとした) Worksheets("sheet2").Activate Dim Gyou As Integer Dim Retsu As Integer For Gyou = 1 To 100 For Retsu = 1 To 17 If Cells(Gyou, Retsu).Value = Not Null Then Cells(Gyou, Retsu).Cut Destination:=Worksheets("sheet1").Cells(5, 2) End If Next Retsu Next Gyou End Sub また、以下のマクロは、実行すると現状のままSheet1のE列以降に移るだけで、データのあるセルだけがまとまるという状態にはなりません。 Range("A1:Q100").SpecialCells(xlCellTypeVisible).Cut Destination:=Worksheets("Sheet3").Range("E1") End Sub 以下は某サイトで、まさに「空白セルを削除しデータの入ってるセルを上詰めにする」というマクロが紹介されていたので、加工してやってみましたが、「RangeクラスのDeleteメソッドが失敗しました」という実行時エラーが出てできませんでした。 Dim WS As Worksheet Dim myRng As Range Dim Lrow As Long Set WS = Worksheets("Sheet1") Lrow = WS.Range("A" & CStr(Rows.Count)).End(xlUp).Row Set myRng = WS.Range("A1:A" & CStr(Lrow)) myRng.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp End Sub データの入っているセルだけを取り出して一つの列にまとめたいのですが、どうしたらいいのでしょうか。
- ベストアンサー
- オフィス系ソフト
- noname#174048
- 回答数6
- Excel 2007 マクロ セルの色のカウント
Excel 2007 マクロ セルの色のカウント 表に複数の色がセルについています。 色がついているセルの隣の列に「1」を返したいです。 どのようなマクロになりますでしょうか。 色がついている列は1行でC列になります。 ご回答よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- hyogara777
- 回答数2
- バッテリーの逆接続後エンジンがかかりません。どなたかご回答お願いします
バッテリーの逆接続後エンジンがかかりません。どなたかご回答お願いします。 トヨタのスターレット(EP82)で、整備目的でバッテリーを外し、いざ戻す時あやまってプラスとマイナスを逆に接続してしまいました。すぐに気づき元に戻したのですが、キーをひねると、おそらくスターターからガガガガ(何かががぶつかる音?)と音がし、エンジンがかかりません。エンジンルームの平型ヒューズは切れていないことを確認し、箱形ヒューズは念のためすべて取り換えました。運転席のヒューズも切れていないことを確認したのですが、エンジンはかかりません。キーをアクセサリーの位置まで回すとエンジンチェックランプ等は点灯します。ワイパー。ウィンカー類も動作します。ただ、キーONにすると勝手にラジエーターのファンが回るようになりました。整備工場に持っていくのが早いことは承知していますが、修理に出す前に自分で何とかすることは可能でしょうか?当方よく車はいじるので工具などもそろっています。どなたか解決策をご存知の方、ご回答よろしくお願いします。
- エクセルのvbaでの検索について
エクセルのvbaでの検索について TextBox1 へ検索値を入れ、CommandButton1clickで結果を ListBox1 へ表示するようにします 表示された結果をクリックすると、TextBox1~4へ各当行1,2,4,5を 表示させるにはどうしたら良いでしょうか? A B C D E 1 番号 名前 出身 趣味 年齢 2 0155 相談 大阪 バイク 25 3 0158 ホーム 東京 バイク 28 4 0233 質問 名古屋 車 24 検索場所はAで行い、「15」で検索した場合ListBox1の表示は 0155 0158 となるようにし、それぞれをクリックするとTextBox1~4へ 0155 相談 バイク 25 0158 ホーム バイク 28 と表示されるようにしたいです
- EXCEL VBAでworksheetに変数を使って指定は出来ますか?
EXCEL VBAでworksheetに変数を使って指定は出来ますか? たくさんのワークシートに処理結果を出したいのですが。
- ベストアンサー
- その他MS Office製品
- shikeshike
- 回答数2
- Excelでmdbファイルが簡単に開けましたが、これはどおすれば開けますか?
Windows XP Home Edition Office XP Personal 2002 Excel 2002 Accessは導入しておりませんが、 お試し版のfeelAccess0.mde(Microsoft Access 2002 Runtime)は導入しております。 Access、mdbファイルについては初心者です。 http://www.tsware.jp/tips/tips_362.htm の方法で C:\Program Files\Fujitsu\FCook\CookData にある FCook002.mdbファイル をデスクトップに持ってきて、 Excelにてワンクリックで上記HP画面のように簡単に開けました。 しかし、 他のプログラムソフトのフォルダ内のmdbファイル(テストコピー2010.mdb)を デスクトップに持ってきて、Excelにて、 上記HPと同じ方法で行ってみましたが、 画像のようになりました。 部分部分でもいいので、とりあえずExcelにて開いてみたいのですが、 画像から次へはどのように進めばよろしいでしょうか? (多分、画像内の1の右のタブを押して、仮のデータベースを作成し、 そこに、テストコピー2010.mdb を置けばよいかと思いますが、 どのようにすればよろしいでしょうか?) 何卒、ご教示お願い致します。
- ベストアンサー
- その他MS Office製品
- oshietecho-dai
- 回答数5
- Excelでmdbファイルが簡単に開けましたが、これはどおすれば開けますか?
Windows XP Home Edition Office XP Personal 2002 Excel 2002 Accessは導入しておりませんが、 お試し版のfeelAccess0.mde(Microsoft Access 2002 Runtime)は導入しております。 Access、mdbファイルについては初心者です。 http://www.tsware.jp/tips/tips_362.htm の方法で C:\Program Files\Fujitsu\FCook\CookData にある FCook002.mdbファイル をデスクトップに持ってきて、 Excelにてワンクリックで上記HP画面のように簡単に開けました。 しかし、 他のプログラムソフトのフォルダ内のmdbファイル(テストコピー2010.mdb)を デスクトップに持ってきて、Excelにて、 上記HPと同じ方法で行ってみましたが、 画像のようになりました。 部分部分でもいいので、とりあえずExcelにて開いてみたいのですが、 画像から次へはどのように進めばよろしいでしょうか? (多分、画像内の1の右のタブを押して、仮のデータベースを作成し、 そこに、テストコピー2010.mdb を置けばよいかと思いますが、 どのようにすればよろしいでしょうか?) 何卒、ご教示お願い致します。
- ベストアンサー
- その他MS Office製品
- oshietecho-dai
- 回答数5
- Worksheets.Count の場合 Dim i As Byte ではいけませんか?
Office XP Personal 2002 Excel 2002 今まで、メモリ等をそれほど気にしなくて使用してきましたが、 下記の 1 のほうが、メモリを使わないのでよろしいかと思いますが、 どうなんでしょうか? それとも、もっと他のことで、メモリの節約をしたほうがよろしいでしょうか。 (シートを256枚以上も使用することはありませんので) (他の質問等をみても、Byte は、ほとんど見かけないように思いましたので) 初歩的な質問かと思われますが、 よろしくお願い致します。 '1 Dim i As Byte '1バイト '2 Dim i As Integer '2バイト For i = 1 To Worksheets.Count - 1
- ベストアンサー
- オフィス系ソフト
- oshietecho-dai
- 回答数2
- はじめまして。
はじめまして。 最近EXCELのマクロを使ってみたいと思っています、超初心者です。 早速ですが質問です。 例えばシート毎にメーカー別で部品の型番が並んでいるとします。 シート名がAAA社のA2セルに12345という部品の型番 シート名がBBB社のA2セルにabcdeという部品の型番 そこで検索用のシートに型番を入力するとその型番のセルに移動する というマクロを作成したいと思っております。 大変恐縮ですがなにぶん初心者ですのでコードの意味等も説明していただけると 助かります。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ROCKMANxpr
- 回答数2
- エクセルのVBAでシートを追加更新していきたいのですがうまくいきません
エクセルのVBAでシートを追加更新していきたいのですがうまくいきません…。 すみません、どなたかぜひ教えてください。 エクセルはそこそこ使えますが、マクロ関係はまったくの初心者です。 excel2003で作業しています。 やりたいのは、実行することによって (1)同一ブックの中に同じ形式のシートを追加する。 (シート名は「0」「1」「2」…というように、ただの数字にしています) (2)セル「K4」の数式 「=I4+'( 1 )'!K4」を 「=I4+'( 2 )'!K4」 というように、どのシートでも、直前のシートのセル「K4」の数値と更新したシートのセル「I4」の数値の合計を「K4」に表示する。 (以下、「I5」「K5」、「I6」「K6」…も同様にしていきます) ようにしたいのです。 (2)のために、 Range("k4").Value = "=I4+'(" & Range("j1").Value - 1 & ")'!K4" (「J1」には、「新しいシート名(数字)と同じ数字」が入るようにしてあります) としましたが、 「 =I4+'(1)'!K4 」としたいのに、 「 =I4+'[1](1)'!K4 」 と表示され、うまくいきません。 また、実行するたびに、 「値の更新」ということで、ファイルを指定するよう指示が出ます。キャンセルすると「#REF!」になります。 何が原因なのか、どうすればいいのかがさっぱり分かりません。 身の程知らずなレベルに挑戦しているのかもしれませんが、どなたか助けていただければ幸いです。 よろしくお願いします! (よく分かっていないため、質問の仕方が適当でなかったらすみません…)
- ベストアンサー
- オフィス系ソフト
- cottondrop
- 回答数2
- VBAのcountif
ここで質問させていただき、配列に必要なデータを入力する所までは出来ました。 次に各行ごとの"OK"の数をカウントしたいのですが、どのように記述すればよいのでしょうか? Sub count0(a, b, c, d, e) Dim i1 As Long Dim i2 As Long Dim A1 As String Dim bb As Variant Dim cc As Variant Dim dd As Variant Dim ee As Variant Dim myLastRow As Long Sheets(a).Select myLastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 bb = Range(b).Resize(myLastRow, 6) cc = Range(c).Resize(myLastRow, 6) dd = Range(d).Resize(myLastRow, 6) ee = Range(e).Resize(myLastRow) For i1 = 1 To myLastRow For i2 = 1 To 6 If bb(i1, i2) = "" Then A1 = "NG" ElseIf bb(i1, i2) = "A1" Or cc(i1, i2) = "A1" Then A1 = "-" ElseIf bb(i1, i2) = cc(i1, i2) Then A1 = "OK" Else A1 = "NG" End If dd(i1, i2) = A1 Next i2 '配列をカウントするこの行以降の記述が良く分かりません。 ee(i1) = Application.WorksheetFunction.CountIf(dd(), "OK") Next i1 Range(e).Resize(myLastRow) = ee End Sub
- ベストアンサー
- その他MS Office製品
- t_t1112
- 回答数3
- VBAの処理を軽くしたい
各行ごとに5回セルを参照した結果を吐き出すプログラムを作成しています。 200行前後の処理が必要なのですが、現在のコードではあまりにも処理が重くなっています。 とにかく処理を軽くしたいのですが、どのような方法が考えられるでしょうか? 初心者なのでコードも含めてご教示頂けたら幸いです。 Sub test(b, c, d) Dim i1, i2 As Long Dim A1 As String For i1=0 To Cells(Rows.Count, 1).End(xlUp).Row For i2 = 0 To 5 If Range(b).offset(i1, i2).Value = "x1" Or Range(c).offset(i1, i2).Value = "x1" Then A1 = "XXX" ElseIf Range(b).offset(i1, i2).Value = Range(c).offset(i1, i2).Value Then A1 = "YYY" Else A1 = "ZZZ" End If Range(d).offset(i1, i2).Value = A1 Next i2 Next i1 End Sub
- ベストアンサー
- その他MS Office製品
- t_t1112
- 回答数5
- VBAの処理を軽くしたい
各行ごとに5回セルを参照した結果を吐き出すプログラムを作成しています。 200行前後の処理が必要なのですが、現在のコードではあまりにも処理が重くなっています。 とにかく処理を軽くしたいのですが、どのような方法が考えられるでしょうか? 初心者なのでコードも含めてご教示頂けたら幸いです。 Sub test(b, c, d) Dim i1, i2 As Long Dim A1 As String For i1=0 To Cells(Rows.Count, 1).End(xlUp).Row For i2 = 0 To 5 If Range(b).offset(i1, i2).Value = "x1" Or Range(c).offset(i1, i2).Value = "x1" Then A1 = "XXX" ElseIf Range(b).offset(i1, i2).Value = Range(c).offset(i1, i2).Value Then A1 = "YYY" Else A1 = "ZZZ" End If Range(d).offset(i1, i2).Value = A1 Next i2 Next i1 End Sub
- ベストアンサー
- その他MS Office製品
- t_t1112
- 回答数5
- excel 2007 同じ幅の設定の表を、何枚も使う
excel 2007 で、以下の画像の表を1ページとして 次のページにも(1)番の列と(2)以降の列の幅の違いを反映させたままコピーしていくことは可能でしょうか? 非常に分かりづらく申し訳ないですがご回答お願いします!!
- ベストアンサー
- その他MS Office製品
- YukiharuAA
- 回答数4
- ダブリ数字の有無の確認にのマクロについて
恐れ入ります、エクセルのマクロで質問があります。 ダブリ数字の有無の確認にのマクロについてです。 下記のように数字の羅列が有ります。 上の番号から順番に検索して列の中にダブった数字(2つ以上)が無いかを確認するマクロはどのように作成すればいいでしょうか? 下記の場合、238075と238220が2以上つあるので、そこが緑色になるようにしたいです。 宜しくお願い致します。 238075 238096 238220 92528 237702 92378 237662 238077 238063 238065 238208 92523 238205 238253 237702 238220 237708 238075
- ベストアンサー
- その他MS Office製品
- mika_mika_
- 回答数3
- ダブリ数字の有無の確認にのマクロについて
恐れ入ります、エクセルのマクロで質問があります。 ダブリ数字の有無の確認にのマクロについてです。 下記のように数字の羅列が有ります。 上の番号から順番に検索して列の中にダブった数字(2つ以上)が無いかを確認するマクロはどのように作成すればいいでしょうか? 下記の場合、238075と238220が2以上つあるので、そこが緑色になるようにしたいです。 宜しくお願い致します。 238075 238096 238220 92528 237702 92378 237662 238077 238063 238065 238208 92523 238205 238253 237702 238220 237708 238075
- ベストアンサー
- その他MS Office製品
- mika_mika_
- 回答数3
- 評価の事務処理をマクロでできないでしょうか
派遣切り後、事務職の就職がようやく見つかりました。 仕事の効率を少しでも上げて、より多くの業務処理をしたいので下記のマクロを作成したいと考えています。 1ヶ月前に書籍を購入して独自でできるか試したのですがダイレクトな情報が見つからず、基礎の部分だけはできたところです。 恐縮なのですがもし、できる方がいましたらぜひ教えて頂けませんでしょうか。 Sheet1とSheet2があります。 Sheet1は、A列には6桁の納品番号の羅列、B列は【空白】です。 Sheet2は、顧客からの評価が記載→A,B,C,空白: A列には6桁の納品番号、B列は【評価】があります。 Sheet1例 ●A列 B列 238062 238075 238096 238220 92528 238230 238090 *A列はMAX70行ほどあります ●Sheet2例 A列 B列 92528 B 238062 A 238075 C 238090 B 238096 A 238220 ←空白(記載無し) 238230 A *A列はMAX500行ほどあります したいことは、 1.Sheet1のA列にある6桁の納品番号を1つずつ検索 2.Sheet2のA列ににその納品番号があるかどうか? 3.Sheet2にその納品番号があれば、Sheet2のその納品番号の右隣(Sheet2のB列)の評価がA,B,C,空白 の何かを見ます 4.そして、Sheet1のB列にその評価を記載します。空白の場合はSheet1のB列のセルを赤くします。 Sheet2にはダブル数字がある可能性が有り、その場合はSheet1のB列のセルを緑色にします。 です。以下の「●Sheet1処理後の例」を参照ください。 ●Sheet1処理後の例 A列 B列 238062 A 238075 C 238096 A 238220 セルを赤色にします 92528 B 238230 A 238090 B
- ベストアンサー
- その他MS Office製品
- mika_mika_
- 回答数1
- 全部黄色になってしまいます
下記のマクロを作成しました。 1.Sheet1のA列の数字を1つずつ検索して、sheet2にその数字があれば、sheet2のそのセル赤くする。 全部あればすべてのセルが赤くなり、無いところがあれば白いままというマクロ 2.sheet1羅列を検索してsheet2に無い場合、逆にsheet1のその数字(検索してなかった数字)を黄色にする。 困っていることは、何も数字の無いところが全部黄色になってしまいます。 sheet1の空白のところは処理せずにそのまま白くあって欲しいのですがどのようにすればいいでしょうか? ●sheet1のA列に下記のような数字が羅列(200行程)しています。 238062 238075 238096 238210 91518 238230 123456 789123 456789 ●sheet2のA列に下記のような数字が羅列しています。 91518 238062 238075 238096 238210 Sub 赤色付け() Set WS1 = Worksheets("Sheet1") Set WS2 = Worksheets("Sheet2") Dim RowPos As Integer Dim i As Integer For RowPos = 1 To 200 If WorksheetFunction.CountIf(Range(WS2.Cells(1, 1), WS2.Cells(200, 1)), WS1.Cells(RowPos, 1)) > 0 Then i = WorksheetFunction.Match(WS1.Cells(RowPos, 1), Range(WS2.Cells(1, 1), WS2.Cells(200, 1)), 0) WS2.Cells(i, 1).Interior.ColorIndex = 3 ELSE WS1.Cells(RowPos, 1).Interior.ColorIndex = 6 End If Next End Sub
- ベストアンサー
- その他MS Office製品
- mika_mika_
- 回答数3
- EXCLEのマクロ 2つのシートを統合する方法
下記のことを行いたいのです。 教えていただけないでしょうか。 下記2つのシートをA列をキーにして sheet1のあ、b、c列のデータに sheet2のc、d列を 統合して、sheet1のdれつ e列に統合して5列のデータを作りたい a列とb列のデータは基本同じですが、スペースが入っていたり 違う場合もある。B列はsheet1のデータを採用 sheet2は不要 ・sheet1 a列 b列 C列 123 ああ 123456 456 いい 125456 789 うう 12344556 1234 ええ 12345678 4567 おお 123456456 8945 かか 1234567844 ------------------- ・sheet2 a列 B列 C列 D列 123 ああ 03-5212-0000 東京都○ 456 いい 06-5212-0000 大阪府○ 789 うう 044-5212-0000 神奈川県○ 1234 ええ 045-512-0000 横浜市○ 4567 おお 043-212-0000 埼玉県○ 8945 かか 03-5212-0000 東京都○
- ベストアンサー
- その他MS Office製品
- tomo0117
- 回答数5