ちょっと変わったマニアな作品が集結

例えばですが、0から9までの数字を2つ抽出し足し算して、特定の数字(例えば10)という数字になる組み合わせは、1と9(19)、2と8(18)、、、とありますが、これをエクセルで自動的に演算し、19、18、、、、と表示させるにはどうしたら良いでしょうか。

同じく引き算で、特定の数字となる組み合わせをエクセルで行うには、どうしたら良いでしょうか。

よろしくお願いします。

A 回答 (3件)

こんにちは!



VBAになりますが、一例です。
質問通りの「例えば」の場合です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, j As Long, cnt As Long
For i = 0 To 9 '←0~9 ★
For j = i + 1 To 9
If i + j = 10 Then
cnt = cnt + 1
Cells(cnt, "A") = i & j
End If
Next j
Next i
End Sub 'この行まで

※ 1~9の中で重複なしに二つの数字を足して、「10」になるというコトは「0」の場合はあり得ないのですが、
とりあえず「0」~「9」という数値でやってみました。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。思ったとおりの表示ができました。

お礼日時:2015/01/24 01:31

よく分からんのですが「0-10」「1-9」みたいな感じで表示させるなら



=ROW(A1)-1&"-"&10-ROW(A1)+1
    • good
    • 0
この回答へのお礼

ありがとうございました。表示方法がちょっと違ったので、別の方法でトライします。

お礼日時:2015/01/24 01:32

総当たりで計算して結果から算出する



例えば○+△=10になる組み合わせなら

A1セルに
=ROW()&"+"&SUMPRODUCT((COLUMN(A1:I1)+ROW()=10)*COLUMN(A1:I1))

と入力しA9セルまでドラッグコピー
    • good
    • 0
この回答へのお礼

ありがとうございました。表示方法がちょっと違ったので、別の方法でトライします。

お礼日時:2015/01/24 01:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで決められた合計になる組み合わせを作成

エクセルを使用し、決められた合計になるような数値の組み合わせを表示するようにしたいのですが、どのようにしたらよいか皆さん教えて下さい。
例えば、
B列に
100・50・70・62・58・70・・・と数値が入力されています。
C1に300と入力しておきます。
300になる組み合わせはどれとどれ・・・なのかというものを作成したいです。
多数ある場合は、全ての組み合わせを表示したいです。
表示例として
B3とB5とB15・・・を合わせると合計C1が300になる、又は298又は302になるという表示をしたいのですがどのようにしたらよいでしょうか。
A列にコードを入力しているので数値の重複はありません。
宜しくお願い致します。

Aベストアンサー

総当りで組み合わせを試し、その合計が与えられた数字と一致するかどうかを調べるプログラムを書くことになります。

なお、20項目くらいまでは何とか実用的に使えますが、30項目を超えると条件によっては総当りを試すのに数年かかる可能性があります。現実的な時間内に必ず回答が得られるようなプログラムを作成することはできません。

Qエクセルでの組み合わせ出力方法(計算含む)

エクセルの初心者です。
エクセルで作成した数字の表を利用して、その表の中の任意の数字の組み合わせの合計が、ある数字ぴったりの組み合わせを探し出すにはどうすればいいでしょうか?表の数字は50くらいあります。

Aベストアンサー

ご希望の操作は、50個のセルに入力されている値の中からいくつかの数字を選択して、その数字の合計が特定の値になる組み合わせを探したいということでしょうか?

その場合はソルバーの機能を利用します。

たとえばA1からA50セルに任意の数字が入力されている場合、C1セルに「=SUMPRODUCT(A1:A50,B1:B50)」と入力しこのセルを選択しておき、「ツール」「ソルバー」(表示されない場合は「アドイン」からソルバーにチェックを入れます)から、目標値の「値」の欄にチェックを入れ、合計する目標数字を入力し、変化させるセルの欄は「B1:B50」セルを選択し、制約条件で「追加」ボタンを押し、左側の欄に「B1:B50」セル、真ん中を「データ」にして「OK」します。
条件を入力したら「キャンセル」して元のダイアログを表示して、「OK」します。

これで目標値が見つかりましたと表示された場合、B列に1と表示されているA列の数字の組み合わせが、求める組み合わせデータとなります。

QExcelでの全通りの組み合わせ出力方法(文字列)

Excelについて全くの初心者で、教えて頂きたい質問があります。

Excelの文字列の全通りの組み合わせを出力がしたいのですが、その方法が分かりません。
例えばセルAに
・りんご
・みかん
・いちご

セルBに
・だいこん
・キャベツ
・トマト

があり、別のセルにその全通りの組み合わせを出力
(文字と文字の間はスペース)

りんご だいこん
りんご キャベツ
りんご トマト
みかん だいこん
みかん キャベツ
みかん トマト
いちご だいこん
いちご キャベツ
いちご トマト

この様に出来る方法はあるでしょうか?
また出来ればその裏(だいこん りんご)も出力したいと考えており、キーワードは3つまで出来るようになりたいです。

どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。

Aベストアンサー

A列B列は1行目からデータがあるものとします。
C列に転記するものとします。

以下の手順をおためしください。

1.Altキー+F11キーでVisualBasicEditorを呼び出します。

2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

Sub test01()
a = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行取得
b = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得
For i = 1 To a '1行からA列最終行まで繰り返し
For n = 1 To b '1行からB列最終行まで繰り返し
x = x + 1
Cells(x, "C") = Cells(i, "A") & " " & Cells(n, "B") 'C列に結合して転記
Next n
Next i
End Sub

3.Alt+F11キーでワークシートへもどります.

4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行

これでできます。
これがわかれば「裏」というのも簡単ですよね。
以上はVBAでの回答ですが、外していたらごめんなさい。

A列B列は1行目からデータがあるものとします。
C列に転記するものとします。

以下の手順をおためしください。

1.Altキー+F11キーでVisualBasicEditorを呼び出します。

2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

Sub test01()
a = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行取得
b = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得
For i = 1 To a '1行からA列最終行まで繰り返し
For n = 1 To b '1行...続きを読む

QExcelでデータ全通り組み合わせ出力方法

Excelでデータ全通り組み合わせ出力方法について教えて頂けますと助かります。

セルA~Eに、数がまちまちのアイテム名が入っています。
(セルA~Eというのは例で、変則的に全てのアイテム数は増減します。)

全ての組合せをセルG~Kに各々書き出してくれる方法はあるでしょうか?
(イメージ添付あり)

できればセルに入力すれば自動的に組合せが追加されていくのが理想です。
Excel2010を使用しており、VBAは初心者です。


どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。

Aベストアンサー

#1、2、cjです。#1、2、補足欄へのレスです。

取り急ぎ、コードのみ修正しました。
#2を元に書き換えています。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rSrc As Range
  Application.EnableEvents = False
  Set rSrc = Range("B2").CurrentRegion
  Application.EnableEvents = True
  If Intersect(Target, rSrc) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  Call PrintCombi(rSrc)
  Application.EnableEvents = True
End Sub

Sub PrintCombi(ByVal rSrc As Range)
  Dim tnFld As Long
  Dim nRc As Long
  Dim nConti As Long
  Dim nRow As Long
  Dim i As Long
  Dim j As Long

  tnFld = rSrc.Columns.Count
  nConti = 1
  With rSrc(1, rSrc.Columns.Count + 3)
    .CurrentRegion.Clear
    Cells(1).Resize(, tnFld).Copy .Cells(1)
    For i = tnFld To 1 Step -1
      nRc = Cells(Rows.Count, i).End(xlUp).Row
      nRow = 2
      For j = 2 To nRc
        Cells(j, i).Copy Destination:=.Cells(nRow, i).Resize(nConti)
        nRow = nRow + nConti
      Next j
      nConti = nConti * (nRc - 1)
    Next i
    With .Cells(2, 1).Resize(nConti)
      For i = 2 To tnFld
        Range(.Cells(1, i), .Cells(.Cells.Count + 1, i).End(xlUp)).Copy Destination:=.Columns(i)
      Next i
    End With
  End With
End Sub

#1、2、cjです。#1、2、補足欄へのレスです。

取り急ぎ、コードのみ修正しました。
#2を元に書き換えています。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rSrc As Range
  Application.EnableEvents = False
  Set rSrc = Range("B2").CurrentRegion
  Application.EnableEvents = True
  If Intersect(Target, rSrc) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  Call PrintCombi(rSrc)
  Application.EnableEvents = True
...続きを読む

Qエクセル 合計値に一番近い件数を出したい

エクセル2000を使用しています。

A1:20,000円
B1:5,200円
B2:4,280円

5,200円と4,280円を何件かずつ足して合計が一番20,000円に近くなるようにしたいです。
手動で計算したら5200円×4件=20,800円が一番近いかと思いますが、これを関数で計算できますか?

Aベストアンサー

Excel2003ですが2000にもゴールシーク機能があれば出来ます

【D1】にROUND関数を入れます「=ROUND(C1,0)」
【E1】に「=B1*C1」
【F1】に「=B1*D1」

計算式入力後「ツール」から「ゴールシーク」を選択
数式入力セルに「E1」セルをクリック
目標値には「20000」を手入力
変化させるセルに「C1」をクリック

最後に「OK」をクリックすると目標値に近い数値が出ます
目標値を例えば「30000」にすると「30000」に近い数値が自動計算されます

Excel2000にゴールシーク機能があればの話ですが・・・。 ^^;


人気Q&Aランキング