• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAに詳しい人に質問です)

ExcelのVBAで効率的なデータ挿入方法を教えてください

web2525の回答

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

右側のトーナメント表のような部分に数字が入っている場合は 右表1~62までを選択した状態で Sub Macro1() For Each R In Selection If R.Value <> "" Then R.Value = Range("A" & R.Value).Value End If Next R End Sub を実行すればいい 右表自体の作製も必要ならば、作成ルーチンを考える必要はありますが

関連するQ&A

  • Excelでカンマやハイフンでの区切り文字について

    例えば下の画像のようにB列に、「,」、「-」、「=」で区切られた数字があります。 E列にセル「E1」で指定した数字が、左から何番目にあるかを表示するにはどういった式を書けばよろしいでしょうか。 例えば、画像ではB2では、「10」は左から4番目にあるので、E2は「4」と出るようにしたいのです。 ここで問題は、()で囲まれている箇所は同順という事になります。 なので、B3では「10」は()内にあるので左から2番目になります。括弧以外は順番通りです。 数字は必ず1~18の2桁の間になります。作業列も可です。 B列に文字列を貼り付けると自動で指定した数字の左からの順番が出るようにしたいので、アドバイスよろしくお願いしますm(_ _)m 画像 ttp://www.poverty.jeez.jp/ura/img/kenmou01024.png

  • エクセルVBA作成に関して

    VBA作成についてお願いいたします. たとえば各セルに以下のような数値があるとします    A   B  C 1 150 2 2 145 6 3 237 7 4 254 6 5 結果としてC5セルに A1*B1+A2*B2+A3*B3+A4*B4の計算をし表示するVBAを作りたいと思っています. このくらい少ない場合はよいのですが,列が多くなるといちいち計算式を書くのは大変ですし,このあたりをVBAで作れないかと悩んでいます. つまり 例表示すると Range("A1").Value とあった場合("A1")の1を2,3,...と増やしていく(あるいは減らしていく)VBAは作成可能ですか? どうも調べたかぎりでは見あたらないようなので. この表現で質問の意図は伝わったでしょうか? ご存じの方よろしくお願いいたします.

  • エクセルVBAに関する二三質問

    いつもお世話になっております。 VBAに関する二三の質問ですが、分かる範囲でお願いします。 1.他モジュールでも使える変数ってありますか? Publicじゃできませんでした。 2.A列のセルが全部「完了」なら、B1に「全部完了」 IF Range("A1").Value = "完了" Or _ Range("A1").Value = "完了" Or _ ・・・・・・ Range("A65536").Value = "完了" Then Range("B1").Value = "全部完了" End if IF Range("A1:B65536").Value = "完了" Then Range("B1").Value = "全部完了" End if じゃできませんでした。 何か方法ありませんか? 3.左上のプロジェクト画面で、 sheet1(職員名簿) sheet2(住所録) とありますよね、sheet1と職員名簿、どっちも通用するのですが、 どっちが本当の名前ですか? sheetを増やしたら、sheet332とどんでもないようなかけ離れたシート名になりますし、 シート現在名を変更したら、他のシートに影響を与えしまうのではと心配です。 お願いします。

  • EXCEL VBA オートフィルタの値コピー2

    たびたびすいませんよろしくお願いします。 EXCEL VBA オートフィルタの値コピーの追加質問です http://okwave.jp/qa4803815.html?ans_count_asc=20 オートフィルタ後、1日当たり行は10~15行あります、そのうちH列からM列まで、ある1行にデータがありますそのデータをH列から順番にSheet1のM20とM28までコピーしたいのです、ただ日によってその列は空欄の時やM列だけの時もありますもあります。さらにN列からP列まで同じようにデータがある時(H列からM列と行が違うときがあり)、上にある行からSheet1のM20とM28に上詰めでコピーしたいのです。 もっと簡単にいいますとH列からP列まである値を上の行からさらにH列から順番に上詰めでSheet1のM20とM28にコピーしたいのです。 なにとぞよろしくお願いします。 Sub データコピー() Range("AB17") = Format(Sheet3.Range("A3").Value, "yy") Range("AE17") = Format(Sheet3.Range("A3").Value, "mm") Range("AH17") = Format(Sheet3.Range("A3").Value, "dd") Range("AK17") = Format(Sheet3.Range("A3").Value, "aaa") Range("D22") = Sheet4.Range("D3").Value Range("D25") = Sheet4.Range("E3").Value Range("H22") = Sheet4.Range("F3").Value Range("D22") = Sheet4.Range("G3").Value Range("L22") = Sheet4.Range("K3").Value Range("Q22") = Sheet4.Range("L3").Value Range("U22") = Sheet4.Range("M3").Value .   .   . End Sub

  • EXCEL VBAマクロについて質問です

    Excel VBAマクロについて質問です ※Excel Ver.は2005でやってます 例のような感じで、 同じ列(列1)に或る同じ列名の数字(列2)を足して 違うセル、または違うブックの指定行に合計値を横並び表示させたいのですがうまくいきません 例のように 同じ言葉が含まれているもの(りんご・青りんご)は足して出したいと思ってます 【理想】実行前 ****************************** 番号  名前  個数 001   りんご  1 002   ばなな  2 003   いちご  3 001   青りんご 2 ****************************** 【理想】実行後 ****************************** 番号   りんご  ばなな  いちご 001    3      -     - 002    -      2     - 003    -      -      3 ****************************** ※「-」記号はついてなくても大丈夫です 現在、組んでいるコード・実行結果をのせておきました どなたか享受ください、お願いいたします j = 1 For i = 0 To Range("A65536").End(xlUp).Row cnt = cnt + Range("列2" & i).Value If Range("C" & i + 1).value <> Range("C" & i).value Then 'もし次の行が違う名 Range("任意セル" & j).Value = Range("A" & i).Value '列1 Range("任意セル" & j).Value = Range("B" & i).Value '列2 Range("任意セル" & j).Value = cnt '数字合計 j = j + 1 '出力行カウントアップ cnt = 0 End If Next

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • エクセル計算式、VBAについて

    エクセル計算式、VBAについて 下記質問の続きでございます。 http://okwave.jp/qa/q5871637.html 先日の質問にて表もうまく完成したかに見えたのですが、 何度か動作確認のテストをしているうちに、少しおかしな点が出てきました。 下記のURLにある表を見ていただきたいのですが、 加工前の状態から、下記のVBAを実行して、別シートへ加工後の形に出力しました。 ※質問文に直接画像を貼りたかったのですが、どういうわけか出来なかったので、 画像URLでのご説明になることをお許し下さい。 ※「加工前」 http://f58.aaa.livedoor.jp/~works/4.jpg ※VBAの内容 Sub ボタン1_Click() With Sheets("加工後") .Range("2:65536").ClearContents For i = 2 To Range("A65536").End(xlUp).Row For j = 1 To Range("D" & i).Value GYOU = .Range("A65536").End(xlUp).Row + 1 .Range("A" & GYOU).Value = Range("A" & i).Value .Range("B" & GYOU).Value = Range("B" & i).Value .Range("C" & GYOU).Value = Range("C" & i).Value .Range("D" & GYOU).Value = Range("D" & i).Value .Range("E" & GYOU).Value = j .Range("F" & GYOU).Value = "111-1111-" & Right("1111" & (i - 1), 4) .Range("G" & GYOU).Value = GYOU - 1 .Range("H" & GYOU).FormulaR1C1 = _ "=MIN(RC[-5],RC[-6]-SUMIF(R1C[-2]:R[-1]C[-2],RC[-2],R1C[-5]:R[-1]C[-5]))" Next j Next i End With End Sub ※「加工後」 http://f58.aaa.livedoor.jp/~works/1.jpg 加工後の結果でおかしいのが、「箱内数量」です。 目立つようにピンクと黄色で色分けしました。 H9とH10 は箱内数量が正しい数値ですが、 H18とH19は本来、H18=50、H19=40 とならなければなりません。 さらに、H22:H24も、H22=50、H23=50、H24=20 となってほしいのです。 ”加工前” シートのH列には下記の計算式が入っており、H列下方へ相対参照にて計算式をコピーしています。 =MIN(INDEX(C:C,MATCH(F2,F:F,0)),INDEX(B:B,MATCH(F2,F:F,0))-(ROW()-MATCH(F2,F:F,0))*INDEX(C:C,MATCH(F2,F:F,0))) ”加工後” シートのH列には事前には何も計算式が入ってませんが、VBAを実行することにより、下記の計算式が入り、H列下方へ相対参照にて計算式がコピーされています。 =MIN(C2,B2-SUMIF(F$1:F1,F2,C$1:C1)) なぜうまく結果が出るところと、出ないところがあるのか分かりません。 正常な結果を求めるには、どこを修正すればよろしいでしょうか?

  • Excelのランキングについて質問。

    画像のように左の表から、右のランキングの表に数が多い順に上から並び替えて表示する方法はありますでしょうか。 作業列を作成しても構いません。よろしくお願いしますm(_ _ )m http://uploda.cc/img/img51955b11616cb.PNG

  • ExcelのVBAで・・・

    VBA初心者です。。 Excelのある列のセルの値が全角文字の場合に、 隣の列に全角カタカナに変換した値を転送するVBAがあります。 変換元の列の中に空白セルがあった時は変換先のセルに 文字があっても空白に置き換えたいのですが、方法がわかりません・・・。 使用しているVBAの内容は下の通りですが、どういう風に 修正すれば実現できるかアドバイスを頂けないでしょうか? よろしくお願い致します!   Dim C As Range   For Each C In Range("E3", Range("E65536").End(xlUp))     If C.Value <> "" Then _     C.Offset(, 1).Value = Application.GetPhonetic(C.Value)   Next

  • エクセル VBAで

    はじめまして。 VBA初心者です。 エクセルVBAで以下のことをしようとしていますが、 「型が一致しません」とエラーが出ます。 何がおかしいのでしょうか。 やろうとしていることは、以下のようなことです。 G2に入っている値を参照し>0なら、H2に”上昇”と表示。 <0なら、”下降”、=0なら”トンボ”と表示させ、G3以降も G列にデータが入っている限りそのように表示したいと思っております。 よろしくお願いいたします。 Sub 陰陽() If Range("G2:G10000").Value > 0 Then Range("H2:H10000").Value = "上昇" ElseIf Range("G2:G10000").Value < 0 Then Range("H2:H10000").Value = "下降" ElseIf Range("G2:G10000").Value = 0 Then Range("H2:H10000").Value = "トンボ" End If End Sub